I have found HTML::TableExtract to be easy to use in simple cases:
use strict;
use warnings;
use HTML::TableExtract;
my $content;
{
local $/ = undef; # slurp mode
$content = <DATA>;
}
my $te = HTML::TableExtract->new();
$te->parse( $content );
foreach my $ts ( $te->tables() )
{
foreach my $row ( $ts->rows() )
{
print join ( "\t", @$row ), "\n";
}
}
__DATA__
<html><head><title>Person Profile</title></head>
<center>
<font size=5><b>Profile</b></font>
<table cellspacing="1" cellpadding="1">
<tr>
<td class="rlab">Short Name:</td>
<td class="l">John</td>
</tr>
<tr>
<td class="rlab">Long Name:</td>
<td class="l">John Abraham</td>
</tr>
<tr>
<td class="rlab">Company:</td>
<td class="l">Idea</a></td>
</tr>
</tr>
<tr>
<td class="rlab">Currency:</td>
<td class="l">EUR</td>
</tr>
</table>
</body></html>