#! perl use strict; use warnings; use HTML::TokeParser; my $p = HTML::TokeParser->new("sample.html") || die "Can't open: $!"; my %hash; while (my $t = $p->get_token){ next unless $t->[0] eq 'S' and $t->[1] eq 'th' and defined $t->[2]{'class'} and $t->[2]{'class'} eq 'DatTh'; my $key = $p->get_text('/th'); chop $key; $p->get_tag('td'); my $value = $p->get_text('/td'); $value =~ s/^\s*//; $value =~ s/\s*\[Add\]\s*$//; $hash{$key} = $value; } open OUT, '>', 'out.txt' or die; for my $key ( keys %hash ){ print OUT "$key => $hash{$key}\n" } close OUT;