perl中foreach(一)


 

perl中的foreach結構
 首先語法
foreach $rock(qw /bedrock slate lava/){
       $rock="\t$rock";
       $rock .="\n";
}
 Foreach 從列表(數組)的第一個元素一直循環執行到最后一個元素,一次迭代一個。控制變量(本例中為$rock)每一次迭代從列表中取出一個新值。第一次為 “ bedrock” ,第三次為 “ lava” 。控制變量不是這些列表元素中的一個拷貝而是這些元素本身。 也就是說,如果在循環中修改這個變量,那原始列表中的元素也會被修改,如下面代碼段所顯示。這條性質是有用的,但是,如果不清楚,可能對其結果感到吃驚。
當循環結束時$rock 的值為多少呢?其值同循環開始之前相同。foreach 循環中控制變量的值會被 Perl 自動保存和恢復。當循環進行時,是沒有辦法改變其值的。循環結束時,變量的值會回到循環開始前,如果沒有值則為 undef。這意味着如果有一個變量和控制變量有相同的名字:“ $rock” ,不用擔心會混淆它們。
需要注意的問題:
1,其他語言的循環變量一般是循環元素的拷貝,改變循環變量的值不會改變原來元素的值。但perl不同,perl的循環變量是指向循環元素的物理地址的,所以對循環變量進行更改,就是對原來的循環元素進行了更改。
2,當循環結束時,$rock(循環變量)的值恢復為循環開始前的值,這是另外一個跟其他語言的不同的地方。
 
#! /usr/bin/perl -W
use strict;
my @array = (1 .. 9);
my $num;
foreach $num(@array)
 {
  $num **= 2;
}
print "@array\n";
輸出如下:
1 4 9 16 25 36 49 64 81
在這里很重要的一點在於,控制變量$num代表着@array中的一個特定項目。如在一個foreach結構的主體內修改控制變量的值,會同時改變控制變量當前代表的那個@array元素。
因此每次執行foreach內的代碼時,@array的當前值都會發生變化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM