2010年11月4日 星期四

[Perl 教學] Perl 關鍵字 'local' 的用法

參考至 這裡 

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

因此,若是不希望sub function會改到全域(呼叫它的也可能是sub function)原有的變數 
就必須在sub function裡的變數 加上local這個關鍵字
  1. sub Test{  
  2.   local $abc = 0;  
  3. }  
  4. $abc = 100;  
  5. Test();  
  6. print $abc;  
#印出來的值會是100 
另外一點就是...若程式使用了 
use strict 
就不能使用local了 
因為上面這種情形就不會出現了...凡事要用的變數都要宣告 
就不會分不清楚是「區域變數」還是「全域變數」了 

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...