package Singleton::Alternate; use strict; use Memoize; memoize('new'); my %singleton = (); sub new { my $class = shift; do { require Carp; Carp::croak ("Incorrect number of arguments; must be (2)."); } unless 2 == @_; my $self = [ $_[1], $_[0] ]; bless \$self, $class; } sub value { my $self = shift; @$$self = reverse @$$self; return $$self->[0]; } 1;