package foo; use strict; use Carp; sub new { my ($class,$id) = @_; croak "can't call new as instance method" if ref($class); my $self = { id => $id || 42, }; return bless $self,$class; }