| Jeff Pang 2008-03-27, 8:02 am |
| This is because you send ls's output to a pipe, and the command on the
right of the pipe get executed successfully.
Try this test on shell:
-bash-3.00$ ls tttt|xargs cat
ls: tttt: No such file or directory
-bash-3.00$ echo $?
0
-bash-3.00$ ls tttt
ls: tttt: No such file or directory
-bash-3.00$ echo $?
1
As you see, the first command always returns a 0.
On Thu, Mar 27, 2008 at 6:50 PM, <ultra.star.x@googlemail.com> wrote:
> I am really going crazy here. I have the following system call that I
> would like to run from perl:
> "ls *.txt | xargs cat > out"
> if *.txt does not exist then I expect to get an exit code different
> from 0.
>
> So to test I do:
>
> use strict;
>
> my $f = "file_which_does_not_exist";
>
> # method 1
> print "test 1\n";
> qx(ls $f | xargs cat);
> print $?,"\n";
>
> #method 2
> print "test 2\n";
> system("ls $f | xargs cat");
> print $?,"\n";
>
> Both calls return 0 instead of returning error as 'ls' fails.
> Help. How do I do this ?
> Would 'open' help ?
>
> C.
>
>
>
> --
> To unsubscribe, e-mail: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
> http://learn.perl.org/
>
>
>
|