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}; } #### sub set_name { my $self = shift; ## validation /untainting here ## $self->{name} = shift; return $self->{name}; } sub name { my $self = shift; if (@_) { warn "Attempt to set value in get" } return $self->{name}; } #### my $val = $obj->set_name(@foo); #### die "No arguments in set_name()" unless @_;