use XML::Twig; use IO::Tee; use feature 'say'; open my $frufile, '>', 'fruit.xml' or die "fruit $!"; open my $vegfile, '>', 'veg.xml' or die "veg $!"; my $tee = IO::Tee->new($frufile, $vegfile); select $tee; my $twig=XML::Twig->new( twig_handlers => { thing => \&magic, _default_ => sub { print '_default_ for '.$_->name." [[["; $_[0]->flush($tee); #default filehandle = tee say "]]]"; 1; }, }, pretty_print => 'none', empty_tags => 'normal', ); $twig->parse( *DATA ); sub magic { my ($thing, $element) = @_; print "magic for ". $element->{att}{type}." [[["; for ($element->{att}{type}) { if (/fruit/) { $thing->flush($frufile); } elsif (/vegetable/) { $thing->flush($vegfile); } else { $thing->purge; } } say "]]]"; 1; } __DATA__
1 2 3
Im an apple! Toronto Im a carrot! Melrose Im a potato! Im a pear! Im a pickle! Patna Im a banana! Im an eggplant! Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu A B
#### _default_ for foo[[[
1]]] _default_ for bar[[[2]]] _default_ for baz[[[3]]] _default_ for header[[[
]]] magic for fruit [[[Im an apple!]]] magic for city [[[]]] magic for vegetable [[[]]] magic for city [[[]]] magic for vegetable [[[]]] magic for fruit [[[Im a pear!]]] magic for vegetable [[[]]] magic for city [[[]]] magic for fruit [[[Im a banana!]]] magic for vegetable [[[]]] magic for city [[[]]] _default_ for thing_list[[[]]] _default_ for chrzaszcz[[[A]]] _default_ for zdzblo[[[B]]] _default_ for trailer[[[]]] _default_ for batch[[[
]]] ##
## _default_ for foo[[[
1]]] _default_ for bar[[[2]]] _default_ for baz[[[3]]] _default_ for header[[[
]]] magic for fruit [[[]]] magic for city [[[]]] magic for vegetable [[[Im a carrot!]]] magic for city [[[]]] magic for vegetable [[[Im a potato!]]] magic for fruit [[[]]] magic for vegetable [[[Im a pickle!]]] magic for city [[[]]] magic for fruit [[[]]] magic for vegetable [[[Im an eggplant!]]] magic for city [[[]]] _default_ for thing_list[[[]]] _default_ for chrzaszcz[[[A]]] _default_ for zdzblo[[[B]]] _default_ for trailer[[[]]] _default_ for batch[[[
]]]