ちなみにこれをifでやるとさらにおかしなことになります。

if (1 and 0){
print 1;
}

これです。何も表示されません。先ほどのunlessとの整合性がつきません。
ifによる条件式部分ではちゃんと二つ共が真の時だけ実行されるのに、
unlessの場合は片方が偽を出せば実行されます。

もしかして
真 and 偽
は最終的に偽扱いされるのですか?