Perl中的多个条件检查

时间:2017-05-03 17:51:29

标签: perl

我正在尝试编写一个Perl程序。程序很简单。如果变量$ a和$ b等于1那么就要打印一些东西。但是catch是程序必须检查$的值b仅当$ var == 1.否则,如果$ $ var == 0,则只需检查$ a值。

我尝试使用嵌套if来编写它。但是我收到了错误。(我尝试使用MACROS以相同的方式在C中完成它。)

my $var = 1 ;

my $a = 1 ;
my $b = 1 ;

if(($a == 1)
{
if($var == 1 )
{
&& ($b == 1)
}

)

print " hey ,it worked " ;

}

案例:1)因此,$ var == 1,它必须在打印前检查$ b的值。

my $var = 1 ;

my $a = 1 ;
my $b = 0 ;

if(($a == 1)
{
if($var == 1 )
{
&& ($b == 1)
}

)

print " hey ,it worked " ;

}

案例:2)$ b == 0,没有任何内容被打印出来。

my $var = 0 ;

my $a = 1 ;
my $b = 1 ;

if(($a == 1)
{
if($var == 1 )
{
&& ($b == 1)
}

)

print " hey ,it worked " ;

}

案例:3)$ var == 0,它不应该检查$ b的值并打印该行。 我应该得到上面提到的结果。但我没有得到怎么做。亲切帮助。

感谢你们的回复。但是你们不明白我的问题。我真正想做的是,回过头来我已经用C语言编写了一个程序,我将在.h文件中定义宏,比如

#define SWITCH 1

在.c文件中,我将检查条件。

 if((a == 1)
#if SWITCH 
        && (b == 1)    
        )
       { 
        print " hey ,it worked " ; 
       }

因此,只有当.h文件中的宏值SWITCH为1时,才会检查$ b。如果该值更改为0,

#define SWITCH 0

然后print语句仅取决于a和b的值未被检查。我想在Perl中做同样的事情。

2 个答案:

答案 0 :(得分:1)

按照您用英语描述的那样执行检查:

if ($var ? $a && $b : $a)

这是一个等效的检查:

if ($a && ( !$var || $b ))

答案 1 :(得分:1)

if ($a == 1) {
    if( ($var != 1) || ($var == 1 && $b == 1)  ) {
        say " hey ,it worked " ;
    }
}