UNIX,LINUX,WinのPerlで動きなおかつ、モジュール(lwpなど)を使わずhttpデータ取得したいのですが何かいいサンプルなどないでしょうか?
お手数おかけしますが、よろしくお願いします!

A 回答 (1件)

LWP を使用しないわけは何ですか?素直に使用して方がいいですよ。


面倒なコーディングをしなくていいので。とりあえず以下にサンプル
を付けますがエラー処理を省いています。
#! /usr/local/bin/perl
#webサーバ名の取得
($remotehost) = @ARGV;
if ($remotehost eq ''){
$remotehost = 'localhost';
}
#ソケットに与えるパラメータの用意
$AF_INET = 2;
$SOCK_STREAM = 1;
$sockaddr = 'S n a4 x8';
chop($localhost = "localhost");
($name, $aliases, $proto) = getprotobyname('tcp');
($name, $aliases, $port) = getservbyname('http', 'tcp');
($name, $aliases, $type, $len, $thisaddr) = gethostbyname($localhost);
($name, $aliases, $type, $len, $thataddr) = gethostbyname($remotehost);
$this = pack($sockaddr, $AF_INET, 0, $thisaddr);
$that = pack($sockaddr, $AF_INET, $port, $thataddr);
#ソケットの作成と接続
if (socket(S, $AF_INET, $SOCK_STREAM, $proto)){
print "socket ok\n";
} else {
die $!;
}
if (bind(S, $this)){
print "bind ok\n";
} else {
die $!;
}
if (connect(S, $that)){
print "onnect ok\n";
} else {
die $!;
}
#ソケットのフラッシュ
select(S); $| = 1; select(STDOUT); # flush S

print "GET /index.html\n\n";
print S "GET /index.html\n";
do {
$msg = <S>;
if(eof(S)){
exit;
}
print STDERR $msg;
} until $msg != "";
    • good
    • 0
この回答へのお礼

環境に依存するようなモジュールはできるだけ利用したくなかった
為、こういったものを探してました。

ありがとうございました。
無事解決できました!

お礼日時:2002/01/30 09:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ