http://www.perlmonks.org?node_id=955130


in reply to Dereference Empty(!) Array

This is my attempt at decoding what's going on:
1) @foo = the result of dereferencing $_[0] 2) @bar = the result of dereferencing $_[0] if $_[0] is true otherwise the result of dereferencing the empty array "()" 3) @jazz = the number of elements of the result of dereferencing $_[0] if that number is true (greater than 0) otherwise the empty array "()"
So, depending on your arguments, both 2 and 3 may give unexpected results, and all three may cause problems if $_[0] is not an array reference