One way is to populate arrays for both company and country with the elements from the dereferenced array reference ($row->[0]: company name; $row->[1]: country name), and then use those arrays to create strings (values) that will be associated with company and country keys. The script, as a whole, would then look like this:
use Modern::Perl; use WWW::Mechanize; use HTML::TableExtract; my ( %hash, @company, @country ); my $mech = WWW::Mechanize->new(); $mech->get('http://www.w3schools.com/sql/default.asp'); my $html_string = $mech->content(); my $te = HTML::TableExtract->new( headers => [ ( 'Company', 'Country' +) ] ); $te->parse($html_string); for my $ts ( $te->tables ) { for my $row ( $ts->rows ) { push @company, qq|'$row->[0]'|; push @country, qq|'$row->[1]'|; } } $hash{'Company'} = '(' . ( join ', ', @company ) . ')'; $hash{'Country'} = '(' . ( join ', ', @country ) . ')'; say "$_ => $hash{$_}" for sort keys %hash
Output:
Company => ('Island Trading', 'Galería del gastrónomo', 'Laughing Bacc +hus Wine Cellars', 'Paris spécialités', 'Simons bistro', 'Wolski Zaja +zd') Country => ('UK', 'Spain', 'Canada', 'France', 'Denmark', 'Poland')
In reply to Re^5: How to fetch table element from a site into data
by Kenosis
in thread How to fetch table element from a site into data
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |