use HTML::TokeParser; use LWP::Simple; my $content = get('http://www.yoursite.com'); my (@alt, $link); my $parser = HTML::TokeParser->new(\$content) || die $!; while (my $token = $parser->get_token) { my $type = shift @{$token}; if ($type eq 'E') { my ($tag) = @{$token}; $link = 0 if $tag eq 'a'; } elsif ($type eq 'S') { my ($tag, $attr, $attrseq, $text) = @{$token}; $link = 1 if $tag eq 'a'; next unless $tag eq 'img'; next unless defined $attr->{'alt'} and length $attr->{'alt'}; push @alt, { $attr->{'src'} => $attr->{'alt'} } if $link; } }