27 9月 2007

[Perl] local的用法

原本local的用法
是為了怕變數被sub function更改到 才有這個用法的
因為perl原本都不用宣告就能使用參數了
所以若是
sub Test
{
$abc = 0;
}
$abc = 100;
Test();
print $abc;
#印出來的值會是0
#因為 sub function中,使用了$abc在之前就宣告了, 所以程式會拿之前宣告的$abc的memory來使用
# 所以呼叫Test()後 值就變了

因此,若是不希望sub function會改到全域(呼叫它的也可能是sub function)原有的變數
就必須在sub function裡的變數 加上local這個關鍵字
sub Test
{
local $abc = 0;
}
$abc = 100;
Test();
print $abc;
#印出來的值會是100


另外一點就是...若程式使用了
use strict
就不能使用local了
因為上面這種情形就不會出現了...凡事要用的變數都要宣告
就不會分不清楚是「區域變數」還是「全域變數」了

沒有留言: