これが私のtemp.html
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
以下のコードを使用して、上記の表の各要素を印刷しようとしています-
#!/usr/bin/perl
use strict;
use Data::Dumper;
use HTML::TableExtract;
my $tex = HTML::TableExtract->new(keep_html=>1);
$tex->parse_file('./temp.html');
my ($table) = $tex->tables;
#print Dumper($table);
my $numColumns = @{$table->rows->[0]};
print "\n numColumns = $numColumns\n";
my $numRows = @{$table->rows};
print "\n numRows = $numRows\n";
for my $rowIndex ( 0..$numRows-1 ) {
for my $columnIndex ( 0..$numColumns-1 ) {
print "\n row $rowIndex column $columnIndex $table->rows->[$rowIndex][$columnIndex] ";
}
}
それは印刷します -
row 0 column 0 HTML::TableExtract::Table=HASH(0x8e7d7f8)->rows->[0][0]
row 0 column 1 HTML::TableExtract::Table=HASH(0x8e7d7f8)->rows->[0][1]
row 1 column 0 HTML::TableExtract::Table=HASH(0x8e7d7f8)->rows->[1][0]
row 1 column 1 HTML::TableExtract::Table=HASH(0x8e7d7f8)->rows->[1][1]
@{$table->rows->[$rowIndex]}->[$columnIndex]
代わりに使用する$table->rows->[$rowIndex][$columnIndex]
と、正しい出力が得られますが、警告が表示されます。警告を削除するには?
Using an array as a reference is deprecated at t.pl line 21.
row 0 column 0 row 1, cell 1
row 0 column 1 row 1, cell 2
row 1 column 0 row 2, cell 1
row 1 column 1 row 2, cell 2