in reply to differences between eq "" and !

The value obtained by using an array in scalar context is the number of entries in that array - and an empty string is not a number.

Neither test in the code you provided will print anything, as it is equivalent to this:

if (0 eq "") { print "TEST1 passed\n"; } if (0) { print "TEST2 passed\n"; }