@xmlfiles = qw(file1.xml file2.xml); foreach my $xfile (@xmlfiles) { $twig = new XML::Twig( twig_roots => { 'pdb_entry/pdb_code' => \&pdb_entry, 'pdb_entry/total_asm' => \&pdb_entry, 'pdb_entry/asm_set/assembly' => \&assembly,}); &parse_twig($xfile); } sub parse_twig { my $file = shift; if ($twig->safe_parsefile($file) == 0) { die "Failed to parse $file: $@"; } my $root = $twig->root; my @params = $root->children('pdb_entry'); $twig->purge; $twig->dispose; } ... handler code here