調べていたらこんなやり方を発見した
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さん。