package bar; use strict; sub new { print "bar::new\n"; my $self = bless( {}, shift ); $self->init(@_); return $self; } sub init { print "bar::init\n"; my $self = shift; my %args = ( bar=>undef, @_ ); $args{bar} = "bar" if ! defined $args{bar}; $self->bar($args{bar}); } sub bar { my $self = shift; $self->{_bar} = shift if @_; return $self->{_bar}; } 1;