你好,我似乎有这个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]))
{
}
Run Code Online (Sandbox Code Playgroud)
TLP*_*TLP 10
... or $split_array[0]
Run Code Online (Sandbox Code Playgroud)
这部分意味着如果你$split_array[0]定义了一个值而不是零或空,你的if将永远为真.
尝试一些格式化更容易发现错误.像这样:
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]
)
)
{ ... }
Run Code Online (Sandbox Code Playgroud)
你为什么不试试:
if (@split_array and $split_array[0] =~ /^(?:cd|set|alias|last)$/)
{
# ...
}
Run Code Online (Sandbox Code Playgroud)