use strict; use warnings; use Web::Scraper; use Data::Dumper; my $sample = q{
Tim
Jon
James
Eric
Jerry
Susie
Kami
Darryl
}; my $names = scraper { process 'h4.bla', 'names[]' => sub { my $elem = shift; my $date = $elem->as_text; my @names = (); for my $node ($elem->parent->findnodes( "//p[preceding-sibling::h4[1][. = '$date']]" )) { push @names, $node->as_text; } return { $date => \@names }; }; }; my $res = $names->scrape( $sample ); print Dumper $res ####
$VAR1 = {
'names' => [
{
'July 12' => [
'Tim',
'Jon'
]
},
{
'July 13' => [
'James',
'Eric',
'Jerry',
'Susie'
]
},
{
'July 14' => [
'Kami',
'Darryl'
]
}
]
};