Webデータ取得(HTTPヘッダー, HTMLソース, use Socket)
#! /usr/local/bin/perl
use Socket;
$host = "webings.net"; #Webデータ取得先ホスト
$file = "/sample/index.html"; #Webデータ取得ファイル
print qq(Content-type: text/html; charset=Shift_JIS\n\n);
print <<END;
<html>
<head>
<title>Webデータ</title>
</head>
<body>
<form action="" method="POST" style="width:center;text-align:center">
Webデータ取得<br>
<textarea cols="80" rows="20">
END
print getData($host, $file); #Webデータ取得
print <<END;
</textarea>
</form>
</body>
</html>
END
exit;
#============================================================================== Webデータ取得
sub getData
{
my $port = getservbyname("http", "tcp");
my $ipaddr = inet_aton($_[0])
or return "ホスト名検出エラー";
my $sock_addr = pack_sockaddr_in($port, $ipaddr);
socket(SOCK, PF_INET, SOCK_STREAM, 0)
or return "ソケット作成エラー";
connect(SOCK, $sock_addr)
or return "サーバー接続エラー";
select(SOCK);
$|=1;
select(STDOUT);
print SOCK qq(GET $_[1] HTTP/1.0\n);
print SOCK qq(Host:$_[0]\n);
print SOCK qq(Connection:close\n\n);
while(<SOCK>){ #HTTPヘッダーを取得しない場合
last if m/^\r\n$/;
}
my @html = <SOCK>;
close SOCK;
return @html;
}
〔 実行する 〕