[デフォルトの] サブルーチン参照を使用する代わりに、代わりに属性にビルダー メソッドを指定できます。 ... これにはいくつかの利点があります。まず、コードのチャンクを独自の名前付きメソッドに移動します。これにより、読みやすさとコード構成が向上します。
したがって、属性は次のようにデフォルトを定義できます。
has attr => (
is => 'ro',
builder => 'subroutine'
);
sub subroutine {
# figure out and return default value
}
これをデフォルトとは別にする必要がある理由がわかりません。名前付きサブルーチンへの参照を渡すことはできませんか?
has attr => (
is => 'ro',
default => \&subroutine
);
存在しないサブルーチンを誤って参照しないことが保証されているので、それはより良いプログラミング手法ではないでしょうか? シンボリック参照ではなく、論理参照を使用してメソッドを参照することになります。