sub instance { my $class = shift; no strict 'refs'; my $instance = \${ "$class\::_instance" }; defined $$instance ? $$instance : ($$instance = $class->_new_instance(@_)); } #### class Logger private_class_method :new @@logger = nil def Logger.create @@logger = new unless @@logger @@logger end end