use LWP::Simple; use CGI qw(:standard escapeHTML); { my %cache = (Time => 0, Data => ""); my $comicsdata = { Dilbert => { Page => "http://dilbert.com" , Regex => qr[(/comics/dilbert/archive/images/dilbert\d+.gif)] , Base => "http://dilbert.com" } }; sub get_data { my $out_comics = ""; my $name = ""; foreach $name (keys %$comicsdata) { my $page = get("$$comicsdata{$name}{Page}"); my $regex = $$comicsdata{$name}{Regex}; my @comics = ($page =~ m/$regex/g); my $base = $$comicsdata{$name}{Base}; @comics = map { $base . $_ } @comics; $out_comics .= $name . a({-href=>$page}, map { img({-src=> $_}) } @comics); } $cache{Time} = time; return($cache{Data} = $out_comics); } } print get_data;