Perl 程式設計/控制流
基本控制結構與 C 程式語言或 Java 程式語言中使用的控制結構沒有太大區別。
while ($boolean) {
# do something
}
until ($boolean) {
# do something
}
雖然語法上相同,但 Perl 不使用break和continue來改變迴圈的流程。Perl 提供以下命令:(帶 C 等效項的註釋)
while ($boolean) {
# do something
if($finished) {
last; # equivalent to 'break'
}
if($done) {
next; # equivalent to 'continue'
}
# do some more
}
請注意,在while(或until) 迴圈中,如果布林表示式在第一次執行時計算結果為假 (或真,分別),則不執行程式碼塊中的語句,即使在程式碼塊的末尾指定也是如此。因此,以下迴圈在功能上是等效的:(同樣適用於do {} until)
while ($boolean) {
# something
}
do {
# something
} while ($boolean);
Thedo {} whileand thedo {} until迴圈從技術上講是 語句修飾符,而不是實際的控制結構。語句將至少執行一次。
for (my $i = 0; $i < 10; $i++) { # for (initialization; termination condition; incrementing expr) { … }
print "$i\n";
}
foreach my $variable (@list) {
print "$variable\n";
}
$variable是@list中每個元素的別名,從第一次遍歷迴圈時的第一個元素開始。當列表中的所有元素都被遍歷完時,迴圈退出。由於$variable是別名,因此更改值會更改列表中元素的值。為了提高程式碼的可維護性,通常應該避免這種情況。
如果$variable省略,則將使用預設變數$_。
foreach (@list) {
print "value: $_ \n";
}
請注意for和foreach實際上是同義詞,可以互換使用。
程式碼塊可以有一個可選的continue部分,該部分在每次迭代結束時執行。
while ($i<4) {
$i++;
} continue {
print "$i\n";
}
在迴圈內部,有三個關鍵字可以控制迴圈的處理方式。
要開始下一次迭代,next跳轉到程式碼塊的末尾。如果有continue程式碼塊,則會執行該部分,以及繼續迴圈的條件。
要重新開始迭代,redo跳轉到程式碼塊的開頭。既不執行continue也不執行條件。
要退出迴圈,last跳轉到程式碼塊末尾的外部。既不執行continue也不執行條件。
在 5.10.1 版本之前,Perl 沒有等效於其他程式語言中的 switch 語句。從該版本開始,它成為一個實驗性功能。
在 Perl 5 中,首先需要使用以下語句之一啟用它
use feature "switch";
use v5.14;
</blockquote>
<syntaxhighlight lang="perl">
given ($t)
{
when ("one") { say 'one'; }
default { say 'default'; }
}
預設情況下,when中的表示式與given中找到的內容匹配。在某些特殊情況下,該值可以直接用作布林值。
if ($boolean_expression) {
# do something
}
unless ($boolean_expression) {
# do something
}
帶有else程式碼塊的語句(這些語句也適用於unless而不是if)
if ($boolean) {
# do something
} else {
# do something else
}
if ($boolean) {
# do something
} elsif ($boolean) {
# do something else
}
控制語句也可以使用條件在語句之後編寫(稱為“字尾”)。這種語法與上面給出的語法在功能上幾乎相同。
statement if Boolean expression; statement unless Boolean expression; statement while Boolean expression; statement until Boolean expression; statement foreach list;