eval { print speak('sheep'), "\n"; };
print $@ if $@;
my %says = (
sheep => 'baa',
monkey => 'foo',
);
eval { print speak('monkey'), "\n"; };
print $@ if $@;
sub speak {
my $animal = shift;
die unless defined $says{$animal};
return $says{$animal};
}
__END__
Died at Perl-1.pl line 21.
foo
####
use 5.010_000;
eval { say speak('sheep'); };
print $@ if $@;
eval { say speak('monkey'); };
print $@ if $@;
sub speak {
my $animal = shift;
state $says = {
sheep => 'baa',
monkey => 'foo',
};
die unless defined $says->{$animal};
return $says->{$animal};
}
__END__
baa
foo
##
##
BEGIN {
my %says = (
sheep => 'baa',
monkey => 'foo',
);
sub speak {
my $animal = shift;
die unless defined $says{$animal};
return $says{$animal};
}
}
##
##
{
my $says;
sub speak {
my $animal = shift;
$says |= initialize_says();
die unless defined $says->{$animal};
return $says->{$animal};
}
}
##
##
sub speak {
my $animal = shift;
state $says = initialize_says();
die unless defined $says->{$animal};
return $says->{$animal};
}