#! perl use strict; use warnings; use Data::Dumper; use Web::Scraper; my $sample = q{

July 12

Tim

Jon

July 13

James

Eric

Jerry

Susie

July 14

Kami

Darryl

}; # Preprocess $sample =~ s{ ( ^ \s* < \s* h4 ) }{
\n$1}gmx; $sample =~ s{
}{}; my $names = scraper { process '//div[contains(@class, "foo")]', 'groups[]' => scraper { process 'h4', 'date' => 'TEXT'; process 'p', 'names[]' => 'TEXT'; }; }; my $temp = $names->scrape($sample); my @res; push @res, { $_->{'date'} => $_->{'names'} } for @{ $temp->{'groups'} }; print Dumper(\@res); #### $VAR1 = [ { 'July 12' => [ 'Tim', 'Jon' ] }, { 'July 13' => [ 'James', 'Eric', 'Jerry', 'Susie' ] }, { 'July 14' => [ 'Kami', 'Darryl' ] } ];