a little pattern matching will do this fairly quickly, with fewer system resources that loading and using the modules..... and it is pretty easy, once you've played with pattern matching a little....... maybe this should be my next faq.
open(HTML,"<HTMLFILE_t

pen"

or die "Failed to open file, $!\n";
while (<HTML>) { $buffer .= $_; }
close HTML;
# while we match <table ... some stuff... /table>, catch the table chunk in $&.
# do this in a 'while' in case there are multiple tables.
# <table>.....</table>
while ($buffer =~ /<table.*?\/table>/gis) # find and match all table chunks
{
$table = $&;
# while we match <td ......><a href......>....</a></td>, catch each <a href...>
while ($table =~ /<td.*?(<a href.*?\/a>)\/td>/gis)
{
$href = $1;
print "$href\n"; # do something with what we caught.
}
}
I have not run this, but I think it is good. It might take a little tweaking to make it match the exact structure of the file your are trying to parse.
'hope this helps.
keep the rudder amid ship and beware the odd typo