#!/usr/bin/perl -- use strict; use warnings; use XML::Rules; use Data::Dump qw/ dd /; use Data::Diver qw/ Dive /; my $rawxml = q{ e1@mail.de e2@mail.de e3@mail.de 0 file1 txt 1 file2 txt }; my $no_rules = XML::Rules->new( rules => [], )->parse( $rawxml ); dd( $no_rules ); my $xr = XML::Rules->new( qw/ stripspaces 8 /, #~ xml2XMLRules foo.xml #~ xml2XMLRules.bat foo.xml #~ #~ rules => XML::Rules->inferRulesFromExample( $rawxml ), rules => { 'extension,filename,id' => 'content', 'config,log' => 'no content', 'destination' => 'content array', 'item' => 'as array no content' }, ); my $ret = $xr->parse( $rawxml ); dd( $ret ); my $config = $ret->{config}; dd({ DESTINATIONS => int @{ $config->{log}{destination} } }); use Data::Diver qw/ Dive /; if( my $destinations = Dive( $ret, qw/ config log destination / ) ){ dd( { DESTINATIONS => int @$destinations, } ); } __END__ { config => { _content => "\n\t\n\t\n\t\n", item => { _content => "\n\t\t\n\t\t\n\t\t\n\t", extension => { _content => "txt" }, filename => { _content => "file2" }, id => { _content => 1 }, }, log => { _content => "\n\t\t\n\t\t\n\t\t\n\t", destination => { _content => "e3\@mail.de" }, }, }, } { config => { item => [ { extension => "txt", filename => "file1", id => 0 }, { extension => "txt", filename => "file2", id => 1 }, ], log => { destination => ["e1\@mail.de", "e2\@mail.de", "e3\@mail.de"] }, }, } { DESTINATIONS => 3 } { DESTINATIONS => 3 }