On 08/06/11 13:41, Paul Makepeace wrote:
On Wed, Jun 8, 2011 at 13:17, Tom Hukins<t...@eborcom.com>  wrote:
On Wed, Jun 08, 2011 at 02:00:41PM +0200, Abigail wrote:
I'd rather go for sacking people that don't know the difference
between

     if (something) { ... }

and

     unless (!something) { ... }
It's sunny outside and pubs are open:  I can think of worse times to
lose my job.

Or does everyone think they are always equivalent?
I'm not everyone, and with a language as flexible as Perl I hesitate
to make strong statements involving words like "always", but I don't
recall encountering a situation where they differ.
$ perl -le 'print "$_ == !!$_ ? ", $_ == !!$_ ? "yes" : "no" for (-1,
0, 1, 2, undef)'
-1 == !!-1 ? no
0 == !!0 ? yes
1 == !!1 ? yes
2 == !!2 ? no
  == !! ? yes


But:

$ perl -le 'print 0 eq !!0 ? "yes" : "no"'
no

This still wouldn't affect the behaviour of the original example. In the context of an if or unless statement, the only thing that matters is the boolean value of the expression, not exactly which true or false value it is. Perl's canonical true and false are 1 and '' respectively, but everything has a boolean value.

Matt

Reply via email to