in reply to Re: Boolean (was Boolian) operators defy my understanding...
in thread Boolean (was Boolian) operators defy my understanding...

This now seems to be making sense to me, so please correct me if I'm wrong:

A successful system call yields the bash exit code of "0", and the Perl interpretation of this "0" (as being a failure), permits execution of the "other" component of the || comparison operator.

On the other hand, an unsuccessful system call produces an exit code other than "0", and is erroneously interpreted by Perl as "true". This accounts for Perl's action of allowing an unsuccessful system call to stand in as true for the first component of the "&&" operator.

Please excuse me if this comes across as a lame discussion, but this issue has been difficult for me to understand.

Thanks!

  • Comment on Re^2: Boolean (was Boolian) operators defy my understanding...

Replies are listed 'Best First'.
Re^3: Boolean (was Boolian) operators defy my understanding...
by philcrow (Priest) on Jun 21, 2007 at 12:10 UTC
    Yes, you've got it. That's why I said system is odd. Most Perl functions return something that works in a boolean test (open ... or die), but not system. It uses the Unix shell behavior (all shells do this not just bash). So you have to reverse the sense of the test at very least. Really, you should know what the failure codes are and handle them as cases, as shown in another response.

    Phil

    The Gantry Web Framework Book is now available.