package Getopt::Long::Framework; use vars qw( @EXPORT_OK ); @EXPORT_OK= qw( Foo Bar Baz ); require Getopt::Long::Framework::Object; my $singleton = Getopt::Long::Framework::Object->new(); sub Foo { $singleton->Foo( @_ ); } ... sub GetObjectPackage { "Getopt::Long::Framework::Object"; } sub new { my $class= shift @_; $class = $class->GetObjectPacket() if $class->can("GetObjectPacket"); ... }