in reply to Error trapping while capturing stdout
under unix shell 2>&1 redirects STDERR to STDOUT. If you then add a pipe you do indeed get the whole lot going down the pipe (so if this pipe then connected to a perl file handle you would be reading STDERR and STDOUT mixed together in Perl). Perl sends it's warnings to STDERR as this little test shows
What may be enough for you is to check the exit code of the script you call (hopefuly it exits with 0 when it runs OK and non-zero values for failures# A simple perl script to generate a warning : perl -we 'my $t; my $t' "my" variable $t masks earlier declaration in same scope at -e line 1. # the same with STDOUT redirected to null : perl -we 'my $t; my $t' >/dev/null "my" variable $t masks earlier declaration in same scope at -e line 1. # same with STDERR to null, aaah the sound of silence : perl -we 'my $t; my $t' 2>/dev/null :
my $cmd="ls /no/way"; my @data=`$cmd`; if($?) { print "$cmd failed with exit code $?\n"; exit 1 } foreach (@data) { chomp; my @ret=split; # do something with @ret here ? }
This is running the external script to completion first then checking it did not give an error code before going on to process the results.
Cheers,
R.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Error trapping while capturing stdout
by ccarden (Monk) on Sep 14, 2004 at 15:35 UTC | |
by Random_Walk (Prior) on Sep 14, 2004 at 16:15 UTC |