sub new { my $self = shift; print "I was invoked by: $self\n"; } main->new; __output__ I was invoked by: main #### { package demo; sub new { my($class, $foo) = @_; my $self = { foo => $foo }; return bless $self, $class; } } use Data::Dumper; my $obj = demo->new('a string'); print Dumper($obj); __output__ $VAR1 = bless( { 'foo' => 'a string' }, 'demo' );