use strict;
use XML::Rules;
my $parser = XML::Rules->new(
rules => {
_default => 'content',
'sampling,sports' => 'content array',
dataName => sub {
return unless $_[1]->{language} eq 'English';
return $_[0] => $_[1];
},
place => sub {
return unless $_[1]->{country} eq 'SouthAfrica';
print "Sampling: " . join( ', ', @{$_[1]->{dataName}{sampling}}) . "\n";
return;
}
}
);
$parser->parse(\*DATA);
__DATA__
SouthAfrica
cricket
rugby
English
16000
11025
Africans
16000
####
use strict;
use XML::Rules;
my $parser = XML::Rules->new(
rules => {
_default => 'content',
'sampling,sports' => 'content array',
dataName => sub {
return delete($_[1]->{language}) => $_[1];
},
place => sub {
return delete($_[1]->{country}) => $_[1];
},
request => 'pass',
},
stripspaces => 7
);
my $data = $parser->parse(\*DATA);
#use Data::Dumper;
#print Dumper($data);
print "Sampling: " . join( ', ', @{$data->{SouthAfrica}{English}{sampling}}) . "\n";
__DATA__
...