2017-05-03 79 views
-2

我正在嘗試編寫一個Perl程序。該程序很簡單。如果變量$ a和$ b等於1,那麼就會打印一些東西。但是catch程序必須檢查對於$ b的值,只有在$ var == 1的情況下才行。否則,如果$ $ var == 0,則只需檢查$ a值。多個條件檢查Perl

我曾嘗試使用嵌套if.But我得到的錯誤寫。(我試圖做同樣的方式如何可以在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的值並打印出該行。 我應該得到上面提到的結果,但我沒有得到如何去做。親切的幫助。

感謝replies.But你不明白我的疑問。我真正想要做的是,回來的路上我已經用C語言編寫一個程序,我將定義在.h文件中類似的宏,

#define SWITCH 1 

在.c文件中,我將檢查條件。

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

所以,在這裏$ B將被檢查,只有在宏觀值開關在.H 1文件。如果該值變爲0,

#define SWITCH 0 

然後打印語句只取決於a和b值的值不會被檢查。我想在Perl中做同樣的事情。

回答

1

此執行,你的英文描述它的檢查:

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

這是一個簡單但等價檢查:

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

感謝reply.I已編輯的問題。請指導我 –

+1

Perl沒有宏。如果你需要這樣的優化,你不應該首先使用Perl。 – ikegami

+0

是的,我知道,但是實現這個perl的最接近的方式是什麼?使用常量SWITCH => 1或類似的東西... –

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

不應該使用== 0和== 1來檢查真相。 – ikegami

+1

'$ var == 1 &&'完全沒用。 – ikegami

+1

同意,但OP沒有說他正在檢查真相(他可能正在檢查數值)。是的,這個說法對一臺機器來說完全沒用,但也許不適合人類?所以我把它包括在內以便閱讀。 –