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;