2008年1月16日星期三

Perl : &foo 与 foo() 的call sub 区别

来源:perlfaq7.22-用 &foo和 foo()的方式來呼叫一個函數有什麼不同?

&foo 
函數擷取你目前 @_裡面的值,同時也跳過原型定義 (prototypes)不用。
這表式此函數抓到的是你當時的 @_, 而非一個空的 @_!

&foo()
會得到一個新的 @_,但是原型定義 仍然會被避開不用。

foo()
推荐用法
得到一個乾淨的 @_

foo

只有在編譯器已事先知道foo函数的定義時(例如已经被use导入,或use subs声明,注意require是不行的),括號才能省略
得到一個乾淨的 @_

没有评论:

发表评论