http://www.perlmonks.org?node_id=53402

Wander through a directory, looking for jpegs, first renaming anything with a space in the name to that name with underscores and jpeg. Find the un-thumbnailed ones, create a thumbnail suffixed with ".thumb.jpg". Uses ImageMagick.
#!/usr/bin/perl use strict; use Image::Magick; my $im = Image::Magick->new; umask 0022; my @names = @ARGV ? @ARGV : grep { -f and -B } <*>; for (@names) { if (/ /) { my $old = $_; tr, ,_,s; $_ .= ".jpg" unless /\.jpg$/; ! -e and rename $old, $_ or next; warn "renaming $old to $_\n"; } next if /\.thumb\.jpg$/; my $thumb = "$_.thumb.jpg"; next if -e $thumb; undef @$im; my $ret; $ret = $im->Read($_) and warn($ret), next; $ret = $im->Scale(geometry => '100x100') and warn($ret), next; $ret = $im->Write($thumb) and warn($ret), next; warn "thumbnail made for $_\n"; }