Perl foreach用法解析
本文和大家重點討論一下Perl foreach命令的用法,Perl foreach循環(huán)中控制變量的值會被Perl自動保存和恢復。當循環(huán)進行時,是沒有辦法改變其值的。循環(huán)結(jié)束時,變量的值會回到循環(huán)開始前,如果沒有值則為undef。
Perl foreach用法
Perl foreach從列表(數(shù)組)的***個元素一直循環(huán)執(zhí)行到***一個元素,一次迭代一個。控制變量(本例中為$rock)每一次迭代從列表中取出一個新值。***次為“bedrock”,第三次為“lava”??刂谱兞坎皇沁@些列表元素中的一個拷貝而是這些元素本身。也就是說,如果在循環(huán)中修改這個變量,那原始列表中的元素也會被修改,如下面代碼段所顯示。這條性質(zhì)是有用的,但是,如果不清楚,可能對其結(jié)果感到吃驚。
當循環(huán)結(jié)束時$rock的值為多少呢?其值同循環(huán)開始之前相同。Perl foreach循環(huán)中控制變量的值會被Perl自動保存和恢復。當循環(huán)進行時,是沒有辦法改變其值的。循環(huán)結(jié)束時,變量的值會回到循環(huán)開始前,如果沒有值則為undef。這意味著如果有一個變量和控制變量有相同的名字:“$rock”,不用擔心會混淆它們。
perl中while和Perl Perl foreach的區(qū)別
while(defined($_=<STDIN>))
{
print“Isaw$_”;
}
在列表context中使用行輸入操作時,則會將所有的行(剩下的)當作一個列表,而每一行作為列表的一個元素:
Perl foreach(<STDIN>)
{
print“Isaw$_”;
}
同樣,行輸入操作和Perl的默認變量$_沒有必然的聯(lián)系。在上例中,Perl foreach默認的控制變量為$_。因此,此循環(huán)將每一行
賦給$_。
上面的看起來相似:好像有理由認為它們的行為也是相似的,不是嗎?
它們在底層是很不相同的。在while循環(huán)中,Perl讀入一行,將它賦給變量,然后進入循環(huán)。再回到開頭,讀入下一行。但
在Perl foreach循環(huán)中,由于行輸入操作在列表的context中使用,因為Perl foreach需要一個列表作為其參數(shù)。因此,它在循環(huán)執(zhí)行
前會將所有的輸入讀入。這種區(qū)別在讀入一個400MB的web服務器的log文件時非常明顯。通常使用while循環(huán)是一種更
好的方法,因為它一次處理一行輸入。
【編輯推薦】
- 使用 Perl 增強 Twitter 實用性
- 深入解析Perl內(nèi)部函數(shù)的使用
- Perl語言中的五大變量類型
- 淺析Perl正則表達式在PHP的實現(xiàn)
- Python編程語言比perl在實際應用中優(yōu)點所在