select \*OUTFILE; my $t = new XML::Twig( twig_roots => { # 'MemberID' => \&member, 'Aging' => \&balance, 'Transaction' => \&transaction, 'Line' => \&line, 'Chits' => \&chits}, pretty_print => 'indented', twig_print_outside_roots => \*OUTFILE, # print the rest ); $t -> parsefile ("temp.xml"); sub balance { my ($t, $balance) = @_ ; my %balance; $balance{30} = $balance->field( 'BAL_30' ); $balance{60} = $balance->field( 'BAL_60' ); $balance{90} = $balance->field( 'BAL_90' ); $balance{120} = $balance->field( 'BAL_120' ); $balance{150} = $balance->field( 'BAL_150' ); $balance{180} = $balance->field( 'BAL_180' ); local ($balance90, $balance120, $balance150, $balance180); $balance30 = $balance{30}; $balance60 = $balance{60}; $balance90 = $balance{90}; $balance120 = $balance{120}; $balance150 = $balance{150}; $balance180 = $balance{180}; local $balancelate = ($balance90 + $balance120 + $balance150 + $balance180); $balancelate =$rounder->round($balancelate); $balance->delete(90); $balance->delete(120); $balance->delete(150); $balance->delete(180); my $balance30elt = new XML::Twig::Elt('BAL_30', $balance30); $balance30elt->set_text($balance30); $balance30elt->set_att(Period => 1); $balance30elt->paste('first_child', $balance); my $balance60elt = new XML::Twig::Elt('BAL_60', $balance60); $balance60elt->set_text($balance60); $balance60elt->set_att(Period => 2); $balance60elt->paste('last_child', $balance); my $balance90 = new XML::Twig::Elt('BAL_90', "$balancelate"); $balance90->set_text( "$balancelate" ); $balance90->set_att(Period => 3); $balance90->paste('last_child', $balance); $balance -> flush(\*OUTFILE); }