Your list statement is incorrect:
print "hello\n" unless (1, 0);
Otherwise you are right. The false scalars are:
undef, '', '0', 0.0;
Truth is evaluated in void (essentially scalar) context so something that looks like a list (array, hash, etc) is coerced into a scalar before the boolean test.
My bad for saying void when I meant Boolean.
But note that when I said "looks like a list" I used that phrase very, very carefully. Many list-like things exist in Perl, but there is no list per se. For an earlier post of mine on this exact topic try Arrays are not lists.
I would give an array slice example, but tye gave a better one than the one I was going to do... :-)