如何利用程序循環控制Perl腳本流程 - Perl, CGI - 程式設計 - 頂客論壇 ,免費遊戲,免費交友,免費空間,免費部落格,免費相簿,免費開店 - 頂客社區 dk101.com 最用心的華人社群網站
發新話題

如何利用程序循環控制Perl腳本流程

如何利用程序循環控制Perl腳本流程

瞭解Perl語句、變量和運算符的基礎知識,並建立第一個簡單的程序後,您希望進一步深入學習。您能學會的最重要的一項內容是控制Perl程序流程——例如,根據不同的情況分離代碼,或重複運行代碼塊,對一個特定的數據組進行全面探查。

本文將介紹後一種情況,為您說明允許您重複執行一組Perl語句的各種Perl結構。這種重複執行叫做循環,這些循環在大多數Perl腳本中發揮著重要作用。下面我們來進行說明。

While循環

Perl中最基本的循環為所謂的while()循環,它允許您在一個特定的條件保持為真的情況下,重複執行一組語句。這個條件是一個標準的Perl條件表達式,可由解析器計算它的值,再返回真或假值。下面是一個簡單的例子(列表A):

列表A

#!/usr/bin/perl

# define number array

@nums = (1..18);

# define counter

$count = 0;

# run loop while number is less than 12

while ($nums[$count] < 12) {

print $nums[$count];

$count++;

}

在這個例子中,只要範圍內的數字小於12,就將它打印出來。數值到12時,條件表達式不再得到滿足,所以不再打印數字。

下面是另一個更加實用的例子(列表B):

列表B

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

while($num > 1){

$fact = $fact * $num;

$num--;

}

print $fact;

這個例子用while()循環由5倒數至1,每個階段的值與前一個階段得到的值相乘。最後,終值為5的階乘,或120。

Until循環

與while()循環相反的是until()循環,直到某個特定的條件為假前,循環一直執行。因此,until()循環中的條件表達式與while()循環中的表達式正好相反。下面是一個例子(列表C):

列表C

#!/usr/bin/perl

# define number array

@nums = (1..18);

# define counter

$count = 0;

# run loop while number is less than 12

until ($nums[$count] >= 12) {

print $nums[$count];

$count++;

}

我們還可以用until()循環重寫階乘的例子,如列表D所示:

列表D

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

until($num < 1){

$fact = $fact * $num;

$num--;

}

print $fact;

For循環

它是Perl中最常用的循環之一,for()循環用來重複執行一個代碼塊,執行的次數預先指定。這個循環通過一個計數器變量運行,變量被初始化為一個特定的值。接下來,對一個條件表達式進行測試,如果結果為真,就執行代碼塊,變量遞增(或遞減)。不斷執行代碼,直到表達式結果為假。

列表E是一個簡單的例子:

列表E

#!/usr/bin/perl

# define number array

@nums = (1..18);

# run loop while number is less than 12

for ($x=0; $x<11; $x++) {

print $nums[$x];

}

在這個例子中,循環計數器的初始值為0。接下來,對條件表達式進行測試,如果結果為真,就打印相應的數列元素。計數器遞增,為下一個循環做準備。這一過程一直持續到第12個數列元素,這時條件表達式的結果為假,循環被終止。


也可以用for()循環重寫階乘的例子,如列表F所示:

列表F

#!/usr/bin/perl

# define variables

$fact = 1;

$num = 5;

# calculate and print the factorial

for ($x=5; $x>1; $x--) {

$fact = $fact * $x;

}

print $fact;

這個稍有不同,因為每次循環計數器變量不是遞增,而是遞減。這樣就可以由5倒數至1,這時條件表達式為假,循環終止。$fact的結果值為5的階乘。

Foreach循環

Foreach循環是一個有些特殊的循環——只有Perl的數組變量能夠使用這個循環。該循環可以方便地重複數組的每一個元素,依次對它們進行處理。列表G是一個例子:

列表G

#!/usr/bin/perl

# define number array

@nums = (1..18);

# iterate through array elements

foreach $n (@nums) {

print "$n ";

}

這裡,foreach()循環結構被提交給一個數組變量,在這個例子中它包含18個元素。循環每重複一次,當前選中的元素被分配給臨時變量$n,並以某種方式進行處理(在本例中簡單在終端打印)。循環繼續進行,直到所有的數組元素按順序處理完畢。

在處理數組時,foreach()循環要大大優於for()循環和while()循環,主要是因為它不需要一個計數器變量手工追蹤它在數組中的位置;這個任務在內部進行處理,使這一循環在處理數組時簡單而透明。

常用循環

這四個循環是Perl中最常用的循環——很少有腳本不會用到它們。希望上面的簡短實例與說明能夠幫助您瞭解它們,並開始在實際實踐中加以應用。編碼快樂!

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。