use Carp; sub name { my $self = shift; if (@_) { $self->{name} = shift; return $self; } elsif (!defined wantarray) { croak "Error:", (caller(0))[3], " called in void context with no arguments"; } else { return $self->{name}; } }