Doin' thumbnails, eh? How about a control break?
use strict;
my @files = <DATA>;
my %filehash = ();
#put the split data into a hash keyed by the filename
foreach (@files) {
chomp;
my @data = split /:/;
$filehash{@data[2]} = [@data];
}
my ($key, $last, $temp, $infoline, @value);
#sort the hash by key
for $key (sort keys %filehash) {
#determine the first letter of the key
$temp = substr($key, 0, 1);
#here's the control break...
#if we haven't seen the first letter of the key before,
#"break" control, do something special, and carry on...
if ($last ne $temp) {
$last = $temp;
print "\n<H1>$last</H1>\n";
}
@value = @{$filehash{$key}};
$infoline = qq(<a href="@value[0]/@value[2]"><img src="images/@val
+ue[3]" width="128" height="128" alt="@value[4]"></a><p>);
print "\t$infoline\n";
}
__DATA__
/path:jpg:mfile.jpg:stuff:stuff
/path:jpg:afile.jpg:stuff:stuff
/path:jpg:anotherfile.jpg:stuff:stuff
/path:jpg:bfile:stuff.jpg:stuff
/path:jpg:cfile:stuff.jpg:stuff
/path:jpg:nfile:stuff.jpg:stuff
/path:jpg:dfile:stuff.jpg:stuff
/path:jpg:efile:stuff.jpg:stuff
/path:jpg:ffile:stuff.jpg:stuff
/path:jpg:gfile:stuff.jpg:stuff
/path:jpg:hfile:stuff.jpg:stuff
/path:jpg:ofile:stuff.jpg:stuff
/path:jpg:stillanotherfile.jpg:stuff:stuff
/path:jpg:ifile:stuff.jpg:stuff
/path:jpg:jfile:stuff.jpg:stuff
/path:jpg:kfile:stuff.jpg:stuff
/path:jpg:lfile:stuff.jpg:stuff
/path:jpg:pfile:stuff.jpg:stuff
/path:jpg:qfile:stuff.jpg:stuff
/path:jpg:rfile:stuff.jpg:stuff
/path:jpg:sfile:stuff.jpg:stuff
Cē