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 |