perl_來來來,解讀一個小程序
#!/usr/bin/perl -w #by www.yiibai.com @array = qw(This is a list of words without interpolation); foreach $key (@array){ print"Key is $key\n"; }
第一:qw是什麽?
解答:簡單說,可以使用qw()準備一個數組。例如,qw(foo bar baz) 相當於 (‘foo‘, ‘bar‘, ‘baz‘)。一些程序員認為,使用qw使Perl腳本更容易閱讀。實際上,你可以使用任何分隔符,而不僅僅是括號組。
另外,在perl語言中,還有一個和qw比較像的qq,也解釋一下qq:
qq{foobar}相當於 "foobar" ;
它的的意思為雙引號字符串,可內插變量;
qw{foo bar}相當於‘foo‘,‘bar‘ ;
它的意思為用空格分解字符串,得到列表,相當於split(‘ ‘,‘foo bar‘)
字符串比較等於用 eq
q運算符對‘號轉義的方式
$someword = ‘i \‘ve some money‘; 可以等價於: $someword = q~i ‘ve some money~;
qq運算符對"號轉義的方式 $someword = "i say \"ok!\"."; 可以等價於: $someword = qq~i say "ok!".~;
qw代表用空格來分隔元素,得到列表 @list = ("perl","Regular","network","web"); 可以等價於: @list = qw(perl Regular network web);
啥事foreach?
Perlforeach從列表(數組)的第一個元素一直循環執行到最後一個元素,一次叠代一個。
foreach $key (@array){ print"Key is $key\n"; }
控制變量(本例中為$key)每一次叠代從列表中取出一個新值。第一次為“This”,第二次為“is”,以此類推。
控制變量不是這些列表元素中的一個拷貝而是這些元素本身。
這就意味著,hiahia~也就是說我手裏的不是你的影子,而是你的真身!一旦在我手裏,我改變了你,你就真的會被改變;
如果在循環中修改這個變量,那原始列表中的元素也會被修改。
下面顯示運行結果;
在考慮一個問題,當循環結束後,$key的值是什麽?
其值和循環開始之前是一樣的。Perl foreach循環中控制變量的值會被Perl自動保存和恢復。當循環進行時,是沒有辦法改變其值的。循環結束時,變量的值會回到循環開始前,如果沒有值,則為undef。這意味著如果有一個變量和控制變量有相同的名字:“$key”,不用擔心會混淆它們。但最好不要這樣做,否則維護你代碼的人會打你。
Key is This
Key is is
Key is a
Key is list
Key is of
Key is words
Key is without
Key is interpolation
考慮這個例子,對輸入進行foreach操作:
Perl foreach(<STDIN>) { print“Isaw$_”; }
在Perl foreach循環中,由於行輸入操作在列表的context中使用,因為Perl foreach需要一個列表作為其參數。
因此,它在循環執行前會將所有的輸入讀入,而每一行作為列表的一個元素:
更多信息: https://my.oschina.net/liangzi1210/blog/120789
http://www.cnblogs.com/tobecrazy/archive/2013/06/28/3161784.html
http://www.yiibai.com/perl/perl_qw.html
http://developer.51cto.com/art/201007/214100.html
http://www.cnblogs.com/chip/p/4188557.html
perl_來來來,解讀一個小程序