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