在Perl中检索if语句的筛选器大小写

在Perl中检索if语句的筛选器大小写,perl,variables,if-statement,Perl,Variables,If Statement,在Perl中有没有一种方法可以直接知道if语句中的哪个测试匹配 例如,以下代码将打印$a: my $a = 0; my $b = 1; if ($a == 0 or $b == 0) { print $XXX ."\n"; } 是否存在这样一个$XXX变量? 或者,唯一的方法是一次过滤每一个: my $a = 0; my $b = 1; if ($a == 0) { print $a ."\n"; } elsif ($b == 0) { print $b ."\n";

在Perl中有没有一种方法可以直接知道if语句中的哪个测试匹配

例如,以下代码将打印$a:

my $a = 0;
my $b = 1;
if ($a == 0 or $b == 0)
{
    print $XXX ."\n";
}
是否存在这样一个$XXX变量?
或者,唯一的方法是一次过滤每一个:

my $a = 0;
my $b = 1;
if ($a == 0)
{
    print $a ."\n";
}
elsif ($b == 0)
{
    print $b ."\n";
}

没有内置功能,但您可以:

my $which;
if (($a eq 0 && $which = '$a') or ($b eq 0 && $which = '$b')) {
  print $which, "\n";
}

有时候,退一步解释一下为什么要这样做会有帮助。不管匹配了哪个变量,这不会打印
0
吗?@Zaid我想这会减少代码大小。注意
eq
是字符串等于运算符;您可能指的是
=
,数字等于运算符。@yoanncoble如果您想检查参数,单独检查而不是像这样组合代码不是更明智吗?例如,
$check{'$a'}=($a==0)好的,这就是我要找的。“没有内置的”。感谢($which=$a eq 0?'$a':$b eq 0?'$b':0)
@ysth是的,但是如果有3个或更多的案例,那么就更不可读了,因为您必须嵌套三个案例。我的很有规律。