use l2kashe 'new';
my $o = new;
$o->foo( ... );
# Vs
use l2kashe;
my $o = l2kashe->new;
$o->foo( ... );
####
use l2kashe; # The importing new() dies
sub new { ... } # This one stays
# Vs
sub new { ... } # The original new() dies
use l2kashe; # This one overwrites
##
##
sub new { bless {}, shift }
# Vs
sub new { bless {}, __PACKAGE__}
# or maybe even:
sub new { bless {}, 'l2kashe' }
##
##
sub new {
my $class_or_parameter = shift;
if ( $class ne __PACKAGE__ ) {
unshift @_, $class_or_package;
}
bless { @_ }, __PACKAGE__;
}
##
##
sub something {
my $self_or_parameter = shift;
if ( ref $self_or_parameter eq __PACKAGE__ ) {
unshift @_, $self_or_parameter;
}
...
}