是否可能有一个';或';或';和';在';等式';或';东北';perl中的比较?

是否可能有一个';或';或';和';在';等式';或';东北';perl中的比较?,perl,compare,operators,Perl,Compare,Operators,是否可以缩短此场景: 使用严格; 使用警告; 我的$tests=[-1,0,1,2,]; foreach my$测试(@$测试){ 如果($test ne 0和$test ne-1){#这一行 打印“$test-Success\n”; }否则{ 打印“$test-错误\n”; } } 输出: -1 - Error 0 - Error 1 - Success 2 - Success 类似于此,您可以在比较语句中放置一组条件(我知道此代码不起作用,这是我正在搜索的类似语法的一个示例): 使用严格

是否可以缩短此场景:

使用严格;
使用警告;
我的$tests=[-1,0,1,2,];
foreach my$测试(@$测试){
如果($test ne 0和$test ne-1){#这一行
打印“$test-Success\n”;
}否则{
打印“$test-错误\n”;
}
}
输出:

-1 - Error
0 - Error
1 - Success
2 - Success
类似于此,您可以在比较语句中放置一组条件(我知道此代码不起作用,这是我正在搜索的类似语法的一个示例):

使用严格;
使用警告;
我的$tests=[-1,0,1,2,];
foreach my$测试(@$测试){
如果($test ne(-1或0)){#这一行
打印“$test-Success\n”;
}否则{
打印“$test-错误\n”;
}
}
用例应该是这样的

foreach my$i(0..$variable){
测试1
如果($test->{a}->{$variable}->{b}ne 1和$test->{a}->{$variable}->{b}ne 0){
...
}
#测试2
如果($test->{a}->{$variable}->{c}ne 3和$test->{a}->{$variable}->{c}ne 4){
...
}
}
类似的一些语法可以简化编写这种类型的测试,而不必创建新的变量以使代码易于阅读。

我会使用或:

类似于

if ($test != 0 || $test != 1) { ... }
if ($test != 0 && $test != 1) { ... }

请注意,
List::Util
是一个核心模块,这意味着您无需安装任何东西即可使其工作。只需将
use List::Util qw(any all)
添加到脚本中。

从技术上讲,
$test ne 0
是不正确的,因为它正在对一个数字进行字符串比较。如果要从匹配中排除确切的字符串
“0”
,则所做的操作将按预期进行。对于其他假值,如空字符串、未定义、
0
(带空格的零)等,它将返回true。如果确实要进行数字匹配,则应使用运算符
=
if ($test != 0 || $test != 1) { ... }
if ($test != 0 && $test != 1) { ... }