調べていたらこんなやり方を発見した
package Name; my $singleton; BEGIN { $singleton = { attribute => 'value', another => 'something', }; bless $singleton, "Name"; } sub new { my $class = shift; return $singleton; }
BEGINブロック内でオブジェクト生成を処理して、スタティック変数にぶちこんどく。コンストラクタ(の名前をもつメソッド)はそのスタティック変数を返すだけ。ifを使わないから読みやすいといえば読みやすい。
http://www.perl.com/pub/a/2003/06/13/design1.html?page=2
いろんなやり方がある、Perlさん。