Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20141121120907_Perl_no_name_sub |
|
Perl_no_name_sub
無名サブルーチンの基本的な文法
sub { body };
my $fn = sub { my $arg = shift; print "$arg\n"; };
$fn->('some-value');
# or
&$fn('some-value');
サブルーチンへのリファレンスは単なるスカラーなので、ハッシュや配列に格納できる。
# 上の $fn を流用
my %hash = ();
for my $name (qw( ken john jonny )){
$hash{$name} = $fn;
}
for my $name (keys %hash){
# それぞれの名前を print する。
$hash{$name}->($name);
}
# 複数のサブルーチンを配列に格納しておいて
my @fns = (
sub {
my $value = shift;
$value =~ s/ /_/g;
return $value;
},
sub {
my $value = shift;
return uc($value);
},
);
my @values = map
{
my $value = $_;
for my $fn (@fns){
# 上書き
$value = $fn->($value);
}
$value;
} ("ah huum", "oh yes");
print "@values\n";
# -> AH_HUUM OH_YES
|
| © Shin Nakamura/BasicWerk 2014 |