Perl foreach控制結(jié)構(gòu)中的控制變量
本文和大家重點(diǎn)討論一下Perl foreach用法,Perl語言中可以用Perl foreach處理整個數(shù)組或列表,并且控制變量(本例中為$rock)每一次迭代從列表中取出一個新值。
Perl foreach控制結(jié)構(gòu)中的控制變量
Perl語言中可以用Perl foreach處理整個數(shù)組或列表。Perl foreach從列表的第一個元素一直循環(huán)執(zhí)行到最后一個元素,一次迭代一個:
- Perl foreach$rock(qw{bedrockslatelava}){
- print“Onerockis$rock.\n”;
- }
控制變量(本例中為$rock)每一次迭代從列表中取出一個新值。第一次為“bedrock”,第三次為“lava”。
需要注意的是控制變量不是這些列表元素中的一個拷貝,而是這些元素本身!也就是說,如果在循環(huán)中修改這個變量,那原始列表中的元素也會被修改(當(dāng)然,對于列表的修改似乎沒有什么必要,但是對于數(shù)組就不一樣了),這條性質(zhì)如果不清楚,可能對其結(jié)果感到吃驚。
- @rocks=qw{bedrockslatelava};
- Perl foreach$rock(@rocks){
- $rock="\t$rock";#@rocks的每一個元素前都加入一個tab
- $rock.="\n";#每一個元素后都加入換行符
- }
- print"Therocksare:\n",@rocks;
那么當(dāng)循環(huán)結(jié)束是$rock的值為多少呢?其值通循環(huán)開始之前相同!Perl foreach循環(huán)中控制變量的值會被Perl自動保存和恢復(fù),當(dāng)循環(huán)進(jìn)行時,是沒有辦法改變其值得,循環(huán)結(jié)束時,變量的值會回到循環(huán)開始前,如果沒有值則為undef。這意味著如果有一個變量和控制變量有相同的名字時,不用擔(dān)心會混淆他們;也就是說,我們可以用已有的變量做循環(huán)變量,而不用擔(dān)心它的值在循環(huán)中改變了。
◆Perl中最常見的默認(rèn)變量
如果在Perl foreach循環(huán)中省略了控制變量,那Perl會使用其默認(rèn)的變量:$_。除了其不尋常的名字外,這和普通的變量時一樣的,如下面的代碼所示:
- Perl foreach(1..10){
- print“Icancount$_\n”;
- }
當(dāng)然$_不僅僅是能用在Perl foreach中,雖然它不是Perl中唯一的默認(rèn)變量,但無疑是使用最普遍的。你會看到許多例子中Perl在沒有要求它使用某個變量或值得時候,會自動使用變量$_.這將節(jié)約程序員大量的時間來思考使用哪一個變量。請看下面的例子:
$_="Yabbadabbadoo\n";
print;#打印出默認(rèn)變量$_
【編輯推薦】
- Perl foreach用法解析
- 淺析Perl正則表達(dá)式在PHP的實現(xiàn)
- 深入解析Perl內(nèi)部函數(shù)的使用
- 揭秘Perl變量中Perl純變量用法
- Perl程序設(shè)計中的Perl用戶函數(shù)(子程序)