file_get_contents的な事がやりてえんだよ!
前置き
メモです。
PHPでさくさくとファイル読み書きしていて、Perlだとなんでこんなクソ面倒くさいことをしないといけないんだ!って悩んでる人も参考になると思います。
情報提供makamakaさんです。
file_(get|put)_contents相当なのは
use File::Slurp; #read $res = read_file('path/to/file.ext'); #write write_file("/path/to/file.ext", $some_data);
「俺はHTTPでゲットして保存したいんだよ!」
use File::Slurp; use Furl; $furl = new Furl(); $res = $furl->get('http://example.co.jp/file.jpg'); die $res->status_line unless $res->is_success; write_file("/path/to/file.jpg", $res->content);
なげえよ糞が!もっとPHPみたいにかきてえんだ!
例えば
file_put_contents('/path/to/file.jpg', file_get_contents('http://example.co.jp/file.jpg') );
ってやりたいんだよ!
回答1
use File::Slurp; use File::HTTP qw(:open); open(my $fh, '<', 'http://example.co.jp/file.jpg') or die $!; write_file("/path/to/file.jpg", <$fh>);
回答2
use PerlIO::http; use File::Slurp; open(my $fh, '<:http', 'http://example.co.jp/file.jpg') or die $!; write_file("/path/to/file.jpg", <$fh>);
なげえよ糞が!1行でかかせろ!!PHPでもできるんだぞ!!!
…
use File::Slurp; use Acme::URL; write_file("/path/to/file.jpg", http://example.co.jp/file.jpg );
※上のコードはURLがBareword(文字列としてクオートされていない)ですが正しいです
ナニッ!?
*1
蛇足、まともな回答
tokuhiromさんに一番ただしい正解をもらってしまった。
mirror()の存在はPHPer脳では忘れやすいので、get()もいいですね。
use LWP::Simple; use File::Slurp; write_file("/path/to/file.jpg", get('http://example.co.jp/test.jpg'));