It is usually a good idea to use the
$class = ref($class) || $class so a new object can be created from an existing object.
use strict;
use Data::Dumper;
package MyClass;
sub new {
my ($class, $foo) = @_;
print __PACKAGE__ . "->new called with $class, $foo\n";
$class = ref($class) || $class;
print "\$class is now $class\n\n";
my $self = {foo => $foo};
return bless $self, $class;
}
package main;
my $obj1 = MyClass->new('fooval1');
my $obj2 = $obj1->new('fooval2');
print Dumper($obj1, $obj2);
__END__
Outputs:
MyClass->new called with MyClass, fooval1
$class is now MyClass
MyClass->new called with MyClass=HASH(0x15d54bc), fooval2
$class is now MyClass
$VAR1 = bless( {
'foo' => 'fooval1'
}, 'MyClass' );
$VAR2 = bless( {
'foo' => 'fooval2'
}, 'MyClass' );