何年も前に、私はこれをカウンセリングしている仲間のプログラマーを覚えています:
new Some::Class; # bad! (but why?)
Some::Class->new(); # good!
悲しいことに、私はその理由を思い出せません。:(コンストラクタがSome::Classモジュールに実際に存在していなくても、どちらの形式も正しく機能しますが、代わりにどこかの親から継承されます。
これらの形式はどちらもSome::Class :: new()と同じではありません。これは、クラスの名前を最初のパラメーターとしてコンストラクターに渡さないため、この形式は常に正しくありません。
2つの形式が同等であっても、Some :: Class-> new()は、モジュールでメソッドを呼び出すための標準的な規則に従っているため、はるかに明確であることがわかります。perlでは、「new」メソッドはそうではありません。特別-コンストラクターは何でも呼び出すことができ、new()は何でも行うことができます(もちろん、私たちは一般的にコンストラクターであると期待していますが)。