#!/usr/bin/perl use 5.016; use strict; use warnings; use XML::Twig; { open (my $OFILE, '>:utf8', './bits.xml') or die "Could not open [./bits.xml]:\n$!\n$^E"; my $t = XML::Twig->new( twig_roots => { 'statement' => sub { push @_, $OFILE; &_statement; 1; }, }, # twig_print_outside_roots => $OFILE, pretty_print => 'indented', ); $t-> parse(*DATA); # parsefile('test2.xml'); close $OFILE; } sub _statement { my ($_twig, $stmt_element, $OFILE) = @_; my $acct = $stmt_element->{'Address'}->{'State'}; print "acct: $acct \n"; $_twig->print; if ( $acct eq 'CA' ) { print "acct: $acct \n"; $_twig->print; $_twig->flush($OFILE); } else { $_twig->purge(); } return; } __DATA__