my $twig = new XML::Twig ( TwigRoots => { '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; } }