如何解决如果语句在Perl中失败
| 您好,我似乎对此if语句有疑问。从逻辑上看,它似乎可行。我想要做的是看是否定义了数组,如果定义了,看单词是否匹配。但是,每当我输入不匹配的单词时,似乎仍然在输入if语句。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始终为true。
尝试一些格式化以更容易发现错误。像这样:
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]
)
)
{ ... }
,为什么不尝试:
if (@split_array and $split_array[0] =~ /^(?:cd|set|alias|last)$/)
{
# ...
}
,or $split_array[0]))
在声明的最后。您没有比较它,所以我猜测任何单词的返回值都是true。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。