SOCKETで入手したデータを抜き出したい
他サーバのHTMLから部分的に抜き出したいと思っています。
他サーバのHTMLを表示する所までは出来たのですが、抜き出す所が出来ずに困っています。
私が抜き出そうと、表示のwhile文内を下記に変えた所、何も表示されなくなりました。
if( $_ =~ m/抜き出したい頭のキーワード/ ){ $flag = 1;}
if( $_ =~ m/表示したい尾のキーワード/ ){ $flag = 0;}
if( $flag eq 1){ print $_;}
このwhile文内には変数に代入するとどうもNGのようです。
教えてGooの過去ログにも同様の質問があったのですが、
解決に至っていませんでした。ご教示願います。
↓現在のソースコード
----------------------------
#!/usr/local/bin/perl -w
use strict;
use Socket; # Socket モジュールを使う
# 接続先ホスト名
my $host = 'www.xxxx.co.jp';
# HTTP プロトコルを使う
my $port = getservbyname('http', 'tcp');
# ホスト名を、IP アドレスの構造体に変換
my $iaddr = inet_aton($host)
or die "$host は存在しないホストです。\n";
# ポート番号と IP アドレスを構造体に変換
my $sock_addr = pack_sockaddr_in($port, $iaddr);
# ソケット生成
socket(SOCKET, PF_INET, SOCK_STREAM, 0)
or die "ソケットを生成できません。\n";
# 指定のホストの指定のポートに接続
connect(SOCKET, $sock_addr)
or die "$host のポート $portに接続できません。\n";
# ファイルハンドル SOCKET をバッファリングしない
select(SOCKET); $|=1; select(STDOUT);
# WWW サーバに HTTP リクエストを送る
print SOCKET "GET /index.html HTTP/1.0\r\n";
print SOCKET "\r\n";
# ヘッダ部分を受け取る
while (<SOCKET>){
# 改行のみの行ならループを抜ける
m/^\r\n$/ and last;
}
# ボディ部分を受け取り、表示
while (<SOCKET>){
print $_;
}