如果语句在Perl中失败
你好,我似乎有这个if语句的问题。它在逻辑上看起来像是有效的。我想要它做的是看看数组是否被定义,如果它被定义看是否匹配。但是每当我输入一个不匹配的词仍然似乎正在进入if语句。如果语句在Perl中失败
if(@split_array and ($split_array[0] eq "cd" or $split_array[0] eq "set" or $split_array[0] eq "alias" or $split_array[0] eq "last"or $split_array[0]))
{
}
... or $split_array[0]
这部分意味着,如果你有定义,在$split_array[0]
一个值,而不是零或为空,如果你将永远是正确的。
尝试一些格式以便更容易发现错误。就像这样:
if (
@split_array and
(
$split[0] eq "cd" or
$split[0] eq "set" or
$split[0] eq "alias" or
$split[0] eq "last" or
$split[0]
)
)
{ ... }
or $split_array[0]))
在声明的末尾。你没有比较它,所以我猜这对任何单词都是正确的。
谢谢!,我没有注意到。我现在修好了 – 2011-05-24 20:45:28
嗯,这个人首先回答问题,他提出的解决方案工作,OP确认,并且正确的标记转到另一个答案。有趣。 (简单的TLP,这不是攻击) – sidyll 2011-05-24 21:13:51
@sidyll,该检查不是针对* one *正确答案或* first *正确答案,而是针对OP认为是最好的**答案。很多时候,这属于解决当前问题的额外步骤,但提供有关该问题和/或解决方案的信息。在这种情况下,虽然肯德里克有正确的答案,但TLP表明,简单的代码易读性会使问题从一开始就显而易见。 – 2011-05-24 21:35:13
你为什么不尝试:
if (@split_array and $split_array[0] =~ /^(?:cd|set|alias|last)$/)
{
# ...
}
你猜这最后'或$ split_array [0]'部分被用于测试? – Sean 2011-05-24 20:40:36
最后一个$ split_array [0]是什么?这似乎会导致问题。 – rkg 2011-05-24 20:41:22
这肯定是一个错字,我现在修复它 – 2011-05-24 20:45:54