use strict; use warnings; my $out ; { local *STDOUT ; local *STDERR ; open STDOUT, '>>', \$out or die "Can't open STDOUT: $!"; # line 28 open STDERR, '>>', \$out or die "Can't open STDERR $!"; # line 29 select STDOUT; $| = 1; # make unbuffered select STDERR; $| = 1; # make unbuffered print "message1\n" ; warn "error1\n" ; print "message2\n" ; } print "Result: $out \n" ; #### Use of uninitialized value in open at ./t2.pl line 29. Result: message1 error1 message2 #### use CGI qw(:standard append add_parameter); use strict ; use warnings ; print CGI::header() ; my $out ; { local *STDOUT ; local *STDERR ; open (STDOUT,">>", \$out) ; open (STDERR,">>", \$out) ; select STDOUT; $| = 1; # make unbuffered select STDERR; $| = 1; # make unbuffered print "message1\n" ; warn "error1\n"; print "message2\n" ; } print "Result: $out\n"; #### $ ./t2.pl Content-Type: text/html; charset=ISO-8859-1 Use of uninitialized value in open at ./t2.pl line 29. Result: message1 error1 message2