tokuhirom's Blog

Do not use LWP::Simple::getstore

LWP::Simple::getstore looks only response code from LWP::UserAgent, but It doesn't handles I/O error on file system.

use LWP::Simple;

getstore("http://image.gihyo.co.jp/assets/images/dev/serial/01/sbcv/0002/3.jpg", '/root/err.jpg')
  or die "Cannot get image";

You cannot handle "Permission Denied" error. orz.

Please use LWP::UserAgent instead. Do not use LWP::Simple in production script. Following script has valid error handler.

use LWP::UserAgent;

my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new(GET => 'http://image.gihyo.co.jp/assets/images/dev/serial/01/sbcv/0002/3.jpg');
my $res = $ua->request($req, '/root/err.jpg');
if (my $died = $res->header('X-Died')) {
  die $died;
} elsif ($res->code != 200) {
  die $res->status_line;
} else {
  # succeeeded.
}