sub foo { my $self=shift; if (@_) { $self->{foo}=shift; return $self; } else { return $self->{foo} } }