string - rindex - perl餘數




在Perl中用“eq”和“==”比較字符串 (3)

==做一個數字比較:它將兩個參數轉換成一個數字,然後比較它們。 只要$str1$str2都以數字計算為0,條件就會得到滿足。

eq進行字符串比較:兩個參數必須符合詞法(區分大小寫)才能滿足條件。

"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.

這個問題在這裡已經有了答案:

我是(一個完整的Perl新手)在if語句中進行字符串比較:

如果我確實如下:

if ($str1 == "taste" && $str2 == "waste") { }

我看到了正確的結果(即,如果條件匹配,則評估“then”塊)。 但我看到這些警告:

參數“品味”在數字eq(==)在行號x處不是數字。
在行號x處,參數“waste”在數字eq(==)中不是數字。

但是,如果我這樣做:

if ($str1 eq "taste" && $str2 eq "waste") { }

即使if條件滿足,它也不評估“then”塊。

在這裡, $str1taste$str2waste

我應該如何解決這個問題?


也許你使用的條件不正確:

$str1 == "taste" && $str2 == "waste"

只有當兩個條件都符合時,程序才會進入THEN部分。

你可以嘗試使用$str1 == "taste" || $str2 == "waste" $str1 == "taste" || $str2 == "waste" 。 如果上述任何條件成立,這將執行THEN部分。


首先, eq用於比較字符串; ==用於比較數字。

即使滿足“if”條件,它也不評估“then”塊。

我認為你的問題是你的變量不包含你認為他們做的事。 我認為你的$str1$str2包含“taste \ n”之類的東西。 通過在if之前print "str1='$str1'\n";檢查它們: print "str1='$str1'\n";

尾隨的換行符可以用chomp($str1);去掉chomp($str1); 功能。





perl