... use Handlers::Library qw/:handlers/; ... open my $filehandle, '>', 'output.xml' or die ">output.xml:$!"; my $p = XML::Twig->new( twig_handlers => { foo => \&foo_handler }, ); #### package Handlers::Library; my $twig_fh; BEGIN { $twig_fh = *STDOUT; } sub twig_output { my $name = shift; open $twig_fh, '>', $name or die ">$name: $!"; } sub foo_handler { ... $twig->flush($twig_fh) } sub bar_handler { ... $twig->flush($twig_fh) } #### use Handlers::Library qw/:handlers/; twig_output('output.xml'); my $p = XML::Twig->new(...);