my $singleton; sub new { my $proto = shift; if ( !defined $singleton ) { $singleton = $proto->SUPER::new( @_ ); } return $singleton; }