関数定義

ちょっとメモ・・というか、こんなのも知らなかったのが恥ずかしい・・・

perlの関数定義で最初に勉強したときは

sub callee {
  my ($msg) = @_;
  print $msg;
}

こんなやつ。でも、これって別の関数に渡すときに

sub caller {
  my ($data, $cbfunc) = @_;
  &$cbfunc($data);
}

ってして

&caller("hello", \&callee);

な感じで使う。

でもperlって

my $callee= sub {
  my ($msg) = @_;
  print $msg;
}

無名関数作成して、変数にバインドして

sub caller {
  my ($data, $cbfunc) = @_;
  $cbfunc->($data);
}

みたいな呼び出し方ができて、

&caller("hello", $callee);

ていうように使えるんですね。

lambdaまんせー

perlのcurry化はえばりまくりそうな気もシルけど、subを使えばjavascriptと同じようにできる気がしてきた。