我在服务器中有多个 HTML 页面,每个页面都有不同的格式。但是,每个页面都包含一个带有一些标题和行值的表。
现在我想读取标题并将其单元格值与之关联。我是 Perl 的新手,很难完成它。
这是一个示例 HTML:
<Table Border=1 width="100%">
<tr>
<td colspan=12 align="Center" nowrap ><B>Detailed Information for Check # 6392933</B></td>
</tr>
<tr>
<td><b>PO Number</b></td>
<td><b>Invoice Number</b></td>
<td><b>DC Number</b></td>
<td><b>Store Number</b></td>
<td><b>Division</b></td>
<td><b>Invoice Amount</b></td>
</tr>
<tr>
<td>0000000000</td>
<td>000000118608965</td>
<td>0</td>
<td>1860</td>
<td>1</td>
<td>$-21.02</td>
</tr>
<tr>
<td>0000000000</td>
<td>000000122865088</td>
<td>0</td>
<td>2286</td>
<td>1</td>
<td>$-42.04</td>
</tr>
</Table>
现在我想创建一个 Perl 结构,其中所有单元格值都应存储到其标题值中,并应打印如下内容:
PO Number = 0000000000, 0000000000
Invoice Number=000000118608965, 000000122865088
DC number= 0, 0 and so on.
我已经尝试从互联网上搜索和做所有事情,但没有任何效果,我刚刚将单元格值放入一个变量中,但这无济于事,因为它将所有值都放入一个单元格值中。
#!/usr/bin/Perl -w
$file = "/Path/to/file";
use Encode;
$da = `cat "$file"`;
my $data = decode_utf8($da);
use HTML::Parser;
use HTML::TableContentParser;
$tcp = HTML::TableContentParser->new;
$tables = $tcp->parse($data);
for $t (@$tables) {
for $r (@{ $t->{rows} }) {
print "Row: ";
for $c (@{ $r->{cells} }) {
$col = $c->{data};
print $col;
}
print "\n";
}
}
任何帮助将不胜感激。