use strict; use warnings; use HTML::Template; use File::Basename qw(fileparse); my $tmpl = HTML::Template->new(filehandle => *DATA); my @images = (); foreach(glob 'images/*.png') { push @images, +{ file => $_, name => basename($_) #you will probably want to get your name from a more interesting source; see below }; } $tmpl->param(images => \@images); print $tmpl->output(); __DATA__ images