open(my $in_fh, '<', $load_file) or die("Can't open input file \"$load_file\": $!\n"); while (my $in_qfn = <$in_fh>) { chomp($in_qfn); my ($rel_path) = $in_qfn =~ m{/([^/]+/[^/]+)\z} or do { warn("Line $. is malformatted. Skipping\n"); next; }; my $image = Image::Resize->new($_); my $gd = $image->resize(160, 120); my $out_qfn = "/imagedb/thumb/$rel_path"; open(my $out_fh, ">", $out_qfn) or do { warn("Can't create file \"$out_qfn\": $!. Skipping\n"); next; }; binmode($out_fh); if (!( print($out_fh $gd->jpeg()) and close($out_fh) )) { warn("Error writing file \"$out_qfn\": $!. Skipping\n"); close($out_fh); unlink($out_qfn); next; } }