2011-08-24 44 views

回答

11

: methodfunction attribute描述。如此標記的子程序不會觸發「作爲CORE ::%s解析的模糊調用」警告。

ysth的評論

警告發生在子具有相同的名稱作爲內置,它被稱爲無&,而不是作爲一個方法調用。 perl使用內建代替,但是會發出警告。 The:方法使警告靜音,因爲它清楚地表明sub從未打算作爲非方法被調用。

更新

此代碼只是調用方法barfoo叫做:

sub foo : method { ## Mark function as method 
    shift->bar(@_) ## Pass all parameters to bar method of same object 
} 

更多細節:

  • : method - 表示引用的子程序的方法。如此標記的子程序不會觸發「作爲CORE ::%s解析的模糊調用」警告。
  • shift - 會從@_第一個參數,這將是$self
  • ->bar(@_) - 調用同一個類中的方法bar與所有其它參數

您可以參閱如下:

sub foo : method { 
    my ($self) = shift @_; 
    return $self->bar(@_); 
} 
+0

什麼' sub foo:方法{shift-> bar(@_)}'作爲一個整體來表示? – asker

+0

我已經添加了更多詳細信息 –

+0

它似乎仍然沒有'method'屬性,對吧? – asker

相關問題