在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部分。