my $twig = new XML::Twig ( TwigRoots, pretty_print => 'indented', => { 'tables/table' => \&processColumns, 'views/view' => \&processColumns } ); $twig->parsefile($SCHEMAS); $twig->dispose; sub processColumns { my( $twig, $tableTwig) = @_; my @colList = $tableTwig->find_nodes( "columns/column"); foreach $x ( @colList){ blah; } $twig->flush; }