
Perl 中有四種迴圈,分別是 while 迴圈 (while loop) 、 for 迴圈 (for loop) 、 do-until 迴圈 (do-until loop) 與 foreach 迴圈 (foreach loop) 。我們先來看看 while 迴圈的寫法
$i = 10; # 設定控制變數
while ($i > 0) {
# 迴圈工作區
print $i."\n";
$i -= 1; # 調整控制變數值
}這個迴圈所進行的工作很簡單,先在命令列上印出 1 ,然後一路遞增到 10 為止。迴圈有三個地方要注意
- 設定控制變數
- 條件
- 調整控制變數值
while 迴圈的控制變數 (control variable) 必須在 while 之前就先設定好,此例中將控制變數 $i 設定為 10 。然後進入 while 的地方,條件 (condition) 就在 while 之後小括弧,此例中為當控制變數 $i 大於 0 時,迴圈便會重複執行。迴圈工作區,也就是 while 後面大括弧中的程式區塊,這裡,我們只有簡單的印出控制變數 $i 的值,迴圈工作區的最後需要有調整控制變數值的地方。
我們先寫成完整的範例,來執行看看結果吧!
#!/usr/bin/env perl
print "\n";
$i = 10; # 設定控制變數
while ($i > 0) {
# 迴圈工作區
print $i."\n";
$i -= 1; # 調整控制變數值
}
print "\n";
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:whiledemo.pl
# 功能:示範 Perl 程式
# 作者:張凱慶
# 時間:西元 2013 年 1 月 執行結果如下

當我們明確知道重複次數的時候,我們得利用控制變數來記錄 while 迴圈所進行次數,這樣 while 迴圈才會有結束的一天,不然若是三個與控制變數相關的部份,漏了任一部份時,就有可能導致無窮迴圈 (infinite loop) 的發生,例如
$i = 10; # 設定控制變數
while ($i > 0) {
# 迴圈工作區
print $i."\n";
# 沒有調整控制變數值
}這樣一來,控制變數 $i 永大小於 0 ,所以迴圈會一直重複執行,此例中會不斷的在命令列印出 10 ,直到強制結束程式的執行為止。
也可用 break 跳出迴圈, contiune 直接進行下一輪。
do-until 迴圈則是先做一次再做條件判斷,直到條件為真時結束迴圈。
for 迴圈則是把三個與控制變數相關的部份都寫進小括弧中,舉例如下
#!/usr/bin/env perl
print "\n";
for ($i = 10; $i > 0; $i -= 1) {
print $i."\n";
}
print "\n";
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:fordemo.pl
# 功能:示範 Perl 程式
# 作者:張凱慶
# 時間:西元 2013 年 1 月 執行結果如下

另外一個 foreach 迴圈用於取得具有多個元素的物件
foreach $i (reverse((1 .. 10))) {
print $i."\n";
}foreach 後先接一個取得元素的變數,後面的小括弧放具有多個元素的物件, reverse() 則是用來將陣列元素順序顛倒的內建函數 (function) 。
以上的 while 迴圈、 for 迴圈與 foreach 都可以互相替代,其實還有其他的寫法,自己喜歡怎麼寫仍是看自己的偏好囉!
接下來我們繼續看到可以將程式模組化的重要的概念,也就是定義自己的副程式 (subroutine) 。
| 中英文術語對照 | |
|---|---|
| 程式 | program |
| 迴圈 | loop |
| 程式區塊 | block |
| while 迴圈 | while loop |
| for 迴圈 | for loop |
| 控制變數 | control variable |
| 條件 | condition |
| 無窮迴圈 | infinite loop |
| 函數 | function |
| 副程式 | subroutine |
您可以繼續參考
基礎篇
相關目錄
回 Perl 入門指南
回 Perl 教材
回首頁
參考資料
http://perldoc.perl.org/perlintro.html
http://perldoc.perl.org/perlsyn.html
http://www.tutorialspoint.com/perl/perl_loops.htm
沒有留言:
張貼留言