use HTML::TokeParser; my $line; sub lineHandler { $line = $_[0]; } my $p = HTML::TokeParser->new($ARGV[0]); $p->handler(start => \&lineHandler, 'line'); $p->handler(end => \&lineHandler, 'line'); while (my $token = $p->get_token() ) { my @tag = @{$token}; if( $tag[0] eq 'S' || $tag[0] eq 'E' ){ print "$line: $tag[@tag-1]\n" ; } }