2010-11-09 2 views
1

я виделPerl, если заявление

if(cond) {} elsif(cond2) {} else {} 
statement if(cond) 
unless(cond) {} 

но есть

statement if(cond) 
statement2 elsif(cond) 
statement3 else 

и

if(cond) {} 
elsun(cond){} //un meaning else unless 
+0

Родственные: [Должен ли я использовать условный язык Perl? : оператор в качестве оператора switch/case или вместо if/elsif?] (http://stackoverflow.com/q/3898836/133939) – Zaid

+1

'if' =' if not' ... Нет необходимости в 'elsun ',' elsif not' будет достаточно. – Zaid

ответ

2

Нет, есть только первый.

Скользящий if, вероятно, более точно показано, как:

statement if cond 

То есть, нет необходимости в круглые скобки условия (так как они не нужны для устранения неоднозначности).

0

Довольно много:

print "foo\n" if ($foo eq $bar); 

ярлык для

if ($foo eq $bar) { 
    print "foo\n"; 
} 

И я редко использую предыдущий, потому что во втором примере, if утверждение является более очевидным, чем в первом примере. Единственный раз, когда я использовал оканчиваются if что-то вроде этого:

next if ($line =~ /^\s*$/); 

Это, как правило, достаточно короткий, чтобы поймать.

Вы могли бы хотеть попробовать:

use Switch; 
switch ($val) { 
    case 1   { print "number 1" } 
    case "a"  { print "string a" } 
    case [1..10,42] { print "number in list" } 
    case (\@array) { print "number in list" } 
    case /\w+/  { print "pattern" } 
    case qr/\w+/ { print "pattern" } 
    case (\%hash) { print "entry in hash" } 
    case (\&sub) { print "arg to subroutine" } 
    else   { print "previous case not true" } 
} 

что то, что я думаю, что вы действительно ищете. BTW, у меня были проблемы с Switch, и он не работает с старше версиями Perl (pre Perl 5.8).

Смежные вопросы