HTML ファイルを読み取るために別のスクリプトを介して呼び出されるサブルーチンがあります。以下はコードです。
sub read_html
{
$data=`cat "$_[0]"`;
use HTML::TableExtract;
print "CALLING read_html to read $_[0]\n";
#my $self = shift;
print "$_[1]";
$te = HTML::TableExtract->new( headers => [($_[1])] );
$te->parse($data);
my $line_cnt=0;
# Examine all matching tables
foreach $ts ($te->tables)
{
if ($ts->rows ne "")
{
foreach $row ($ts->rows)
{
foreach (@$row) { $_='' unless defined $_; }
print @$row;
if (@$row[0] ne ' ' and @$row[0] ne '' and
@$row[0] ne "\n" and @$row[0] ne "\t")
{
$line_cnt++;
}
}
}
return $line_cnt;
}
}
上記のスクリプトを実行すると、ヘッダーが変数として渡されたときに HTML テーブル データが表示されません。
$te = HTML::TableExtract->new( headers => [($_[1])] );
ただし、式を以下のようにハードコードされた値に置き換える$_[1]
と、指定されたヘッダーの下にあるすべての列の値が返されます
$te = HTML::TableExtract->new(
headers => [("PO Number",
"Invoice Number",
"DC Number",
"Store Number",
"Invoice Amount",
"Discount",
"Amount Paid")] );
read_html($file, $headers)
where$file
はファイル名であり$headers
、コンマ区切りのヘッダー値を保持するようにサブルーチンを呼び出しています。
どんな助けでも大歓迎です。