use strict; use warnings; use HTML::TokeParser::Simple; use Data::Dumper; my $parser = HTML::TokeParser::Simple->new(\*DATA); my (@img,@link,@a); while (my $token = $parser->get_token) { if ($token->is_start_tag('img')) { push @img, $token->return_attr->{src}; } elsif ($token->is_start_tag('link')) { push @link, $token->return_attr->{href}; } elsif ($token->is_start_tag('a')) { push @a, $token->return_attr->{href}; } } print Dumper \@img,\@link,\@a; __DATA__ foo