http://qs1969.pair.com?node_id=126449


in reply to HTML::TableExtract revisited

That's a very curious problem, dataDrone. Apparently, the module will only succeed if it partly fails. For example, just switching the order of your headers makes the silly thing work.:

#!/usr/bin/perl -w use strict; my $row; use HTML::TableExtract; $/ = ""; my $string = <DATA>; my $headers = ['Date of Incident','Date','Unit cost']; my $te = HTML::TableExtract->new(headers => $headers) ; $te->parse($string); # Examine all matching tables foreach my $ts ($te->table_states) { print "Table (", join(',', $ts->coords), "):\n"; foreach $row ($ts->rows) { print join(',', @$row), "\n"; } } # use Data::Dumper ; # print Dumper($te); __DATA__ <TABLE> <tr> <th>Date</th> <th>Date of Incident</th> <th>Unit cost</th></tr> <tr> <td>11-19-2001</td> <td>11-14-2001</td> <td>.01</td> </tr> <tr> <td>11-18-2001</td> <td>11-14-2001</td> <td>.01</td> </tr> </TABLE>

The explanation might be found if you uncomment those Data::Dumper lines above, and examine the output, where the pattern to be tested is printed out. A match is tested against this pattern:
'hpat' => '((Date of Incident)|(Date)|(Unit cost))'
But I gave it no further thought beyond this. Good luck.
mkmcconn