• ベストアンサー

perlでURLから画像ファイルを作成できますか?

perlである別のサイトの画像をサーバーにコピーする手段はあるのでしょうか? たとえば、yahooのhttp://img.yahoo.co.jp/images/new2.gifをファイルにしたいです。 get_gazou.cgi にそのソースを記述して、アクセスしたら、指定のサーバー内にファイルを作るというものです。 wgetのperl版です。

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

  • ベストアンサー
回答No.1

その他の回答 (1)

  • nokiasan
  • ベストアンサー率50% (3/6)
回答No.2

#!/usr/local/bin/perl $file_name = time . ".gif"; &get_gazou($file_name); sub get_gazou{ $host = "img.yahoo.co.jp"; $path = "/images/new2.gif"; use Socket; $port = 80; $ipaddress = inet_aton("$host"); $sock_addr = pack_sockaddr_in($port,$ipaddress); socket(SOCKET,PF_INET,SOCK_STREAM,0); connect(SOCKET,$sock_addr); select(SOCKET);$ |= 1;select(STDOUT); print SOCKET "GET $path HTTP/1.0\r\n"; print SOCKET "HOST: $host\r\n"; print SOCKET "\r\n"; open(FILE, ">$_[0]"); while(<SOCKET>){ print FILE "$_"; } close(SOCKET); } こんな感じに出来ます(但しこの場合はヘッダ情報を含めてしまうので除去が必要)。 最近私はwgetをそのまま使ったりします。楽なんですよね。 $command = "wget http://img.yahoo.co.jp/images/new2.gif"; if(!open(WGET,"|$command 2>&0")){print "can't open wget.";} close(WGET); サーバにもwgetを置きます。まぁ、普通は置いてありますよね。 Windowsサーバなら、cgiの場所にコピーするだけです。