#!/usr/bin/perl
use strict;
use warnings;
use XML::Rules;
my @rules = (
_default => sub {$_[0] => $_[1]->{_content}},
query => sub { print "$_[1]->{name}: $_[1]->{topN}\n" },
);
my $r = XML::Rules->new(rules => \@rules);
$r->parse(\*DATA);
__END__
topHosts
LINK
20
topHosts
topHosts
LINK
120
topHosts
####
use strict;
use warnings;
use XML::Rules;
use Data::Dumper qw(Dumper);
my @rules = (
_default => 'content',
# Default filter to 'None' (v5.10 syntax here)
filter => sub { $_[1]{_content} //= 'None'; $_[0] => $_[1]{_content} },
query => 'no content array',
queries => 'pass no content',
);
my $r = XML::Rules->new(rules => \@rules);
my $data = $r->parse(\*DATA); # Assume same data as above
print Dumper $data;
# Output
$VAR1 = {
'query' => [
{
'topN' => '20',
'layer' => 'LINK',
'filter' => 'None',
'name' => 'topHosts',
'datatype' => 'topHosts'
},
{
'topN' => '120',
'layer' => 'LINK',
'filter' => 'None',
'name' => 'topHosts',
'datatype' => 'topHosts'
}
]
};