you're using interpolating heredocs :) double-quoted here docs :) strict vars or warnings would have warned you
#!/usr/bin/perl --
use strict; use warnings;
use XML::LibXML 1.70; ## for load_html/load_xml/location
use Data::Dump qw/ dd /;
my %shabs;
my $dom = XML::LibXML->new( qw/ recover 2 / )->load_html( string => $c
+ontent );
for my $h5 ( $dom->findnodes( q{ //h5 } ) ){
print $h5->nodePath, "\n";
my $key = $h5->textContent;
my $next = $h5->nextSibling;
while( $next ){
print $next->nodePath, "\n";
$shabs{$key} .= $next->textContent;
$next = $next->nextSibling;
last if eval { $next->tagName eq 'h5' } ;
}
print "\n";
}
dd( \%shabs );