參考至 這裡
原本local的用法是為了怕變數被sub function更改到 才有這個用法的
因為perl原本都不用宣告就能使用參數了
所以若是#印出來的值會是0
#因為 sub function中,使用了$abc在之前就宣告了, 所以程式會拿之前宣告的$abc的memory來使用
# 所以呼叫Test()後 值就變了
因此,若是不希望sub function會改到全域(呼叫它的也可能是sub function)原有的變數
就必須在sub function裡的變數 加上local這個關鍵字#印出來的值會是100
另外一點就是...若程式使用了
use strict
就不能使用local了
因為上面這種情形就不會出現了...凡事要用的變數都要宣告
就不會分不清楚是「區域變數」還是「全域變數」了
原本local的用法是為了怕變數被sub function更改到 才有這個用法的
因為perl原本都不用宣告就能使用參數了
所以若是
- sub Test {
- $abc = 0;
- }
- $abc = 100;
- Test();
- print $abc;
#因為 sub function中,使用了$abc在之前就宣告了, 所以程式會拿之前宣告的$abc的memory來使用
# 所以呼叫Test()後 值就變了
因此,若是不希望sub function會改到全域(呼叫它的也可能是sub function)原有的變數
就必須在sub function裡的變數 加上local這個關鍵字
- sub Test{
- local $abc = 0;
- }
- $abc = 100;
- Test();
- print $abc;
另外一點就是...若程式使用了
use strict
就不能使用local了
因為上面這種情形就不會出現了...凡事要用的變數都要宣告
就不會分不清楚是「區域變數」還是「全域變數」了
This message was edited 2 times. Last update was at 09/02/2010 08:54:23
沒有留言:
張貼留言