在Perl比较“eq”和“==”的string
我是(一个完整的Perl新手)做一个if
语句中的string比较:
如果我这样做:
if ($str1 == "taste" && $str2 == "waste") { }
我看到正确的结果(即如果条件匹配,它评估“then”块)。 但是我看到这些警告:
参数“品味”在数字eq(==)在行号x不是数字。
在行号x处,参数“waste”在数字eq(==)中不是数字。
但是,如果我这样做:
if ($str1 eq "taste" && $str2 eq "waste") { }
即使if条件满足,它也不评估“then”块。
在这里, $str1
是taste
, $str2
是waste
。
我应该如何解决这个问题?
首先, eq用于比较string; ==用于比较数字。
即使满足“if”条件,也不评估“then”块。
我认为你的问题是你的variables不包含你认为他们做的事情。 我认为你的$str1
或$str2
包含“taste \ n”之类的东西。 检查他们之前print "str1='$str1'\n";
if : print "str1='$str1'\n";
。
尾随的换行符可以用chomp($str1);
去掉chomp($str1);
function。
==
进行数字比较:将两个参数转换为数字,然后进行比较。 只要$str1
和$str2
都以数字的forms计算为0,条件就会满足。
eq
进行string比较:两个参数必须符合词法(区分大小写)才能满足条件。
"foo" == "bar"; # True, both strings evaluate to 0. "foo" eq "bar"; # False, the strings are not equivalent. "Foo" eq "foo"; # False, the F characters are different cases. "foo" eq "foo"; # True, both strings match exactly.
你尝试chomp $str1
和$str2
?
我发现与使用(另一个) $str1
eq“Y”类似的问题,它只在我第一次做:
chomp($str1); if ($str1 eq 'Y') { .... }
之后的作品。
希望有所帮助。
也许你正在使用的条件是不正确的:
$str1 == "taste" && $str2 == "waste"
只有当两个条件都成立时,程序才会进入THEN
部分。
你可以尝试使用$str1 == "taste" || $str2 == "waste"
$str1 == "taste" || $str2 == "waste"
。 如果上述任何条件成立,这将执行THEN
部分。