• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PerlでHTML取得(その前にSocket取得)できない原因について)

PerlでHTML取得できない原因とソケットエラーの対処法

このQ&Aのポイント
  • PerlでHTML取得(その前にSocket取得)する際にソケットの作成に失敗する場合、Socket Error: Invalid argumentのエラーが表示されます。
  • これにはいくつかの原因が考えられます。1つ目は、バージョン5.8.0のPerlを使用しているため、互換性の問題が発生している可能性があります。
  • また、ウィルス対策ソフトがコードの実行を防ぐため、ソケットの作成に失敗することもあります。ウィルス対策ソフトを一時的に停止してみるか、別の環境で実行してみることを検討してください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208124
noname#208124
回答No.2

補足 書き方ってのはnewの位置じゃなくて中括弧(波括弧)の事ね

gusutaf
質問者

お礼

すいません。new の()小括弧を間違えていたのが原因でした。文法ミスを気をつけたいと思います。 またLWPも勉強してみます。 修正前 $client_socket = new IO::Socket::INET { PeerAddr => $host, PeerPort => 'http', Proto => 'tcp', TimeOut => '5' }; unless ($client_socket) { print "Socket Error:$!\n"; } 修正後 $client_socket = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 'http', Proto => 'tcp', TimeOut => '5' ); unless ($client_socket) { print "Socket Error:$!\n"; }

その他の回答 (1)

noname#208124
noname#208124
回答No.1

そのnewの書き方はどこで学んだものですか? パッケージを作るときのコンストラクタとか書いてはいませんでしたか? $client_socket = IO::Socket::INET->new ( PeerAddr => $host, PeerPort => 'http', Proto => 'tcp', TimeOut => '5' ); unless ($client_socket) { die "Socket Error:$!\n"; } # 入力をサーバーに送信 print "$host $file" . "\n"; print $client_socket "GET $file HTTP/1.0\n\n"; # 入力をフラッシュする $client_socket->flush(); # 受信データを垂れ流す print while (<$client_socket>) ついでにソケットの勉強ならともかく更新時刻取るだけならLWP使った方楽です

gusutaf
質問者

お礼

すいません。new の()小括弧を間違えていたのが原因でした。文法ミスを気をつけたいと思います。 またLWPも勉強してみます。 修正前 $client_socket = new IO::Socket::INET { PeerAddr => $host, PeerPort => 'http', Proto => 'tcp', TimeOut => '5' }; unless ($client_socket) { print "Socket Error:$!\n"; } 修正後 $client_socket = new IO::Socket::INET ( PeerAddr => $host, PeerPort => 'http', Proto => 'tcp', TimeOut => '5' ); unless ($client_socket) { print "Socket Error:$!\n"; }

関連するQ&A