sub prepare_foo_print { my ($foo, $file) = @_; open my $fh, '>>', $file or die "bummer: $!\n"; my $oldfh = select $fh; # currently opened $file now is default filehandle # (instead of STDOUT) print_whatever ($foo); select $oldfh; } sub print_whatever { print shift; }