これはどのように機能しますか?
use strict;
use warnings;
sub base {
my $constant = "abcd";
my ($driver_cr) = (@_);
&$driver_cr;
}
base(sub {print $constant});
つまり、 $driver_cr が $constant なしでアクセスできる方法は次のとおりです。
- $constant を引数としてドライバーに渡す
&$driver_cr($constant)
- $constant のスコープをグローバルに変更する
our $constant = "abcd";
共通ブロックを作成し、ベースから $constant を移動:
use strict; use warnings; { my $constant = "abcd"; sub base { my ($driver_cr) = (@_); &$driver_cr; } base(sub {print $constant}); }