比較と真偽判定は違う
投稿: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.
