top
Loading...
perl中的變量插值
這樣一段程序
$tt="123"
print 'this is $tt.';
結果將打印出this is $tt.
如果將第二句改成
print "this is $tt.";也就是把單引號改成雙引號
結果就會打印出this is 123.

這是因為在使用雙引號時,perl將檢查引號內的每個字符,看看是否有特殊定義,
然后將它替換為其內容,這叫做變量插值。而對于單引號,則原封不動的保持引號
間的內容,不做任何替換。

注意單雙引號之間的這一差別很重要。


數組也可以象標量變量一樣,放在雙引號之間,引用數組元素或數組的值。
引用整個數組時,將把所有的數組元素按下標順序,以空白為分隔替換進來,比如
@array=(1,2,3);
print "this is @array.";
將打印出this is 1 2 3.
而print "this is $array[2]."將打印出this is 3.

有人寫了這樣一段程序

open (TEMP,"temp.txt");
@aa=<TEMP>;
close (TEMP);
.
.
.
open (TEMP,">temp.txt");
print TEMP "@aa";
close (TEMP);

結果發現用記事本打開temp.txt后,數組@aa沒被改動的元素
均在最前面被加了一個空格。(注:實際上應該是只有第一個元素沒被加空格)

如果注意到print TEMP "@aa";這一句的雙引號,就不會感到奇怪了,
系統自動在每個元素間加了一個空格嗎。
改成print TEMP @aa就一切正常了。

北斗有巢氏 有巢氏北斗