sub foo { my($P) = @_; &$P("blah\n"); } foo($to_file ? sub { print MYFILE @_ } : sub { print @_ }); # or foo(sub { if ($to_file) { print MYFILE @_ } else { print @_ } });