sub name {
my $self = shift;
if (@_) {
$self->{name} = shift;
return $self;
}
return $self->{name};
}
####
$person->name; # get the name
$person->name("Ovid"); # set the name
####
$person->name(qw/Publius Ovidius Naso/);
# or
$person->name([qw/Publius Ovidius Naso/]);
# or
my $name = Name->new("Publius Ovidius Naso");
$person->name($name);
####
sub name {
my $self = shift;
if (1 == @_ && ! ref $_[0]) {
$self->{name} = shift;
return $self;
}
elsif (! @_) {
return $self->{name};
}
else {
croak "Unknown arguments to name()";
}
}
####
sub name($self) {
return $self->{name};
}
sub name($self, $name) {
$self->{name} = $name;
return $self;
}
####
use Sub::Signatures;
sub foo($bar) {
print $bar;
}
sub foo($bar, $baz) {
print "$baz, $bar";
}
foo(1); # prints 1
foo(1,2); # prints 1, 2
foo(1,2,3); # fatal error