関数に引数を束縛するbind関数のperl版。
sub sub_bind { my ($sub, @args) = @_; sub { $sub->(@args, @_); }; }
上位は呼び出すだけにしたい場合などに重宝する。
sub fuga { my ($sub) = @_; sub_bind($sub, ("c", "d")); } sub hoge { my ($sub) = @_; fuga(sub_bind($sub, ("a", "b"))); } my $sub = sub_bind( sub { print @_, "\n"; } ); $sub = hoge($sub); ##### # 呼び出すだけの人 $sub->(); # abcd
最近良く使う。