in reply to differences between eq "" and !

In @array eq "", @array is a scalar string context. In scalar context, an array returns the number of elements it has (0). Furthermore, since a string is required, the number of elements is converted to a string ("0"). Finally, "0" eq "" is false, so the predicate won't get executed when the array is empty.

By the way, @array == 0 would work.