perl中foreach(一)

來源:互聯網
上載者:User

標籤:

 

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的當前值都會發生變化

perl中foreach(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.