Perl條件語句if和unless,它們允許你控製腳本的執行。if語句有五種不同的格式:
if (EXPR) if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK ... if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK STATEMENT if (EXPR)
第一種格式被歸類為一個簡單的語句,因為它可以在另一份聲明中使用,無需在塊中,如:
print "Happy Birthday!\n" if ($date == $today);
在這種情況下,如果表達式計算為一個真值(true),該消息將被打印。
第二種格式是比較熟悉的條件語句,你可能從其他語言的跨過來學習:
if ($date == $today) { print "Happy Birthday!\n"; }
這將產生相同的結果和前麵的例子。
第三種格式允許異常。如果表達式為true,則執行的第一個塊,否則(else),第二塊被執行:
if ($date == $today) { print "Happy Birthday!\n"; } else { print "Happy Unbirthday!\n"; }
第四種形式,允許額外的測試,如果第一個表達式不返回true,elseif語句可以要求重複無限次測試許多不同的方案:
if ($date == $today) { print "Happy Birthday!\n"; } elsif ($date == $christmas) { print "Happy Christmas!\n"; }
第五形式,如果所有其他測試失敗允許額外的測試和最後的異常:
if ($date == $today) { print "Happy Birthday!\n"; } elsif ($date == $christmas) { print "Happy Christmas!\n"; }else { print "Happy Unbirthday!\n"; }
unless 語句自動隱含如果(if),所以unless expr是真則執行塊的邏輯相反。
print "Happy Unbirthday!\n" unless ($date == $today); is equivalent to print "Happy Unbirthday!\n" if ($date != $today);
例如,下麵與前麵IF ... ELSE是一個不太優雅的解決方案,雖然達到了相同的結果,例如:
unless ($date != $today) { print "Happy Unbirthday -by www.gitbook.net!\n"; } else { print "Happy Birthday!\n"; }
最後的條件語句實際上是一個操作符。有條件的運算符,這是IF ... ELSE條件語句的代名詞,但更短更緊湊。供操作的格式是:
(expression) ? (statement if true) : (statement if false)
例如,我們可以效仿前麵的例子如下:
($date == $today) ? print "Happy B.Day!\n" : print "Happy Day!\n";