我只是在尝试检查字符串是否等于“%2B”,并且如果确实将其更改为“+”。
问题在于比较。
if ($lastItem == "%2B"){
$lastItem = "+";
}
当$ lastItem是完全不同的东西(例如“hello”)时,它仍将进入语句。我一直在动脑筋,但我无法分辨出哪里出了问题。 %2B是否有某些特殊含义?我是Perl的新手。
谢谢
最佳答案
比较字符串时,您需要使用 eq
,否则perl会尝试将字符串转换为数字(这将是0
),并且您会发现诸如"a" == 0
这样的奇数来评估true。比较两个字符串时,您当然会有效地得到if (0 == 0)
,这就是您要描述的问题。
if ($lastItem eq "%2B") {
重要的是要注意,如果您使用过
use warnings
,那么此问题将更容易发现,因为此单行代码将演示:$ perl -wE 'say "yes" if ("foo" == "bar")'
Argument "bar" isn't numeric in numeric eq (==) at -e line 1.
Argument "foo" isn't numeric in numeric eq (==) at -e line 1.
yes