比較と真偽判定は違う
投稿:2018-04-18
このツイートを見て
文字列比較じゃなさそうなので、もしかすると真偽判定の意図だったのかもしれないと推測、比較と真偽を並べてみました。
#!/usr/bin/perl use utf8; use strict; use warnings; my @trial = (0, 1, "0.0", "", "perl"); for (@trial) { no strict; no warnings; print "if (0 == \"$_\") ---> "; eval <<"EOF"; if (0 == "$_") { print "true.\n"; } else { print "false.\n"; } EOF print "if (\"$_\") ---> "; eval <<"EOF"; if ("$_") { print "true.\n"; } else { print "false.\n"; } EOF } exit;
WindowsとLinuxで確認しました。
if (0 == "0") ---> true. if ("0") ---> false. if (0 == "1") ---> false. if ("1") ---> true. if (0 == "0.0") ---> true. if ("0.0") ---> true. if (0 == "") ---> true. if ("") ---> false. if (0 == "perl") ---> true. if ("perl") ---> true.