T.MURACHIの日記: 無名サブルーチンの再帰呼び出し
日記 by
T.MURACHI
パッケージ内でプライベートなサブルーチンなんかを定義しようとして、
package hoge;
my $func = sub {
# ...
};
sub ugege {
my $val = shift;
&$func($val);
# ...
}
なーんてことをやったりするのですが、このプライベートなサブルーチンを再帰呼び出ししたいなぁなどと思って、
my $func = sub {
my $foo = shift;
# ...
&$func($bar); # エラー: 未定義のサブルーチン呼び出し
};
などとやろうとすると、実行時にエラーになってしまいます。
回避は意外に簡単で、単に変数の宣言と関数リファレンスの代入を分けて書けば良いだけみたいです。
my $func; # 宣言だけ先に済ませておくのがミソ
$func = sub {
my $foo = shift;
# ...
&$func($bar);
};
無名サブルーチンの再帰呼び出し More ログイン