use strict ; use warnings ; sub STDERR { *STDERR } ; p(STDERR, "---Hello world: '", STDERR, "'\n") ; print STDERR "+++STDERR: '", STDERR, "'\n" ; sub p { my ($H, @p) = @_ ; print $H "//[$H] ", @p ; } ; #### use strict ; use warnings ; sub STDERR () { *STDERR } ; p(STDERR, "---Hello world: '", STDERR, "'\n") ; print STDERR "+++STDERR: '", STDERR, "'\n" ; sub p { my ($H, @p) = @_ ; print $H "//[$H] ", @p ; } ; #### String found where operator expected at tst.pl line 8, near "STDERR "+++STDERR: '"" (Do you need to predeclare STDERR?) syntax error at tst.pl line 8, near "STDERR "+++STDERR: '"" Execution of tst.pl aborted due to compilation errors.