in reply to Re^5: Need sleep walking help
in thread Need sleep walking help
Consider Program 1:
Consider Program 2:#!/usr/bin/perl use warnings; for my $i (1..5) { $x+1; # here just to throw an error to STDERR print "$i\n"; } __END__ Useless use of addition (+) in void context at C:\Projects_Perl\testin +g\demoStdErrorTiming1.pl line 6. Name "main::x" used only once: possible typo at C:\Projects_Perl\testi +ng\demoStdErrorTiming1.pl line 6. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming1.pl line 6. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming1.pl line 6. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming1.pl line 6. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming1.pl line 6. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming1.pl line 6. 1 2 3 4 5
Program 1's error messages come out right way while stdout messages come later because the stdout's filehandle's output buffer is not ready to be "flushed", "printed".#!/usr/bin/perl use warnings; $|=1; ### BIG DEAL HERE ### Unbuffers STDOUT for my $i (1..5) { $x+1; #here just to throw an error to STDERR print "$i\n"; } __END__ Useless use of addition (+) in void context at C:\Projects_Perl\testin +g\demoStdErrorTiming2.pl line 7. Name "main::x" used only once: possible typo at C:\Projects_Perl\testi +ng\demoStdErrorTiming2.pl line 7. Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming2.pl line 7. 1 Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming2.pl line 7. 2 Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming2.pl line 7. 3 Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming2.pl line 7. 4 Use of uninitialized value $x in addition (+) at C:\Projects_Perl\test +ing\demoStdErrorTiming2.pl line 7. 5
Program 2's error messages are interleaved with "normal" prints because the normal prints are being prematurely flushed out. There is a big,(can be HUGE) performance penalty for this but, this makes debugging easier.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^7: Need sleep walking help
by haukex (Archbishop) on Feb 02, 2017 at 08:59 UTC | |
by Marshall (Canon) on Feb 02, 2017 at 09:14 UTC | |
by haukex (Archbishop) on Feb 02, 2017 at 09:22 UTC | |
by Marshall (Canon) on Feb 03, 2017 at 21:11 UTC | |
by haukex (Archbishop) on Feb 04, 2017 at 09:31 UTC | |
|