ちょっとたいへんですがSocketを使う手も有ります。
## ---------------------------------------------------------------------------------ここから
use strict;
use Socket;
## この配列にページを格納
my @aBUFFER;
## URLをセット
$arg = 'http://www.hoge.com/index_hoge.html';
# デフォルトホストの設定
my $host = '';
my $path = '';
my $port = getservbyname('http', 'tcp'); ## ポートは基本的に省略されるので
# URL解析処理
$arg =~ m!(http:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!;
if ($3) {$host = $3;}
if ($5) {$port = $5;}
if ($6) {$path = $6;}
## 元のデータをデバッグ用に残す
my $con_host = $host;
my $con_port = $port;
my $url = $path;
# ソケットの生成
$ip = inet_aton($con_host) || die "host($con_host) not found.\n";
$sockaddr = pack_sockaddr_in($con_port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die "socket error.\n";
# ソケットの接続
connect(SOCKET, $sockaddr) || die "connect $con_host $con_port error.\n";
autoflush SOCKET (1);
# HTTP要求を送信
if ($http eq '1.1') {
print SOCKET "GET $url HTTP/1.1\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
} else {
print SOCKET "GET $url HTTP/1.0\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
}
# HTTP応答を受信
while (chomp($buf=<SOCKET>)) { push(@aBUFFER,$buf); }
# 終了処理
close(SOCKET);
## ---------------------------------------------------------------------------------ここまで
最終的にHTMLの行ごとに配列@aBUFFERに格納されます。
また、応用すれば他のプロトコルもカバーできます。
プロトコルの学習にどうぞ。
補足
すいません、便利そうなのですがLWPというモジュールの使い方がわかりません。。