in reply to Re^4: Using 'and'
in thread Array Woes

The double-negative is, of course, to replicate the functionality of the earlier function which returned either 1 or undef. Invert once, and you get 1 on false, undef on true. Invert again, and you get 1 on true, undef on false.

It's a cheap trick, and using !! can even throw off some syntax highlighters, so I tend to space it out.

Here's another way to do it:
my $foo = (....) && 1;