useすると関数が増える話
前回に引き続き、use
して関数を増やしてみようと思います。
つまり、Exporter
がやってくれるアレです。
こんな感じで、ファイルを配置します。
. ├── Bar.pm └── aaa.pl
“Bar.pm”はこんな感じ。
package Bar; use strict; use warnings; use v5.10; sub import { my $klass = shift; my $caller = caller( 0 ); say '$caller is ', $caller; { no strict 'refs'; *{"${caller}::bar"} = sub { say $caller, '::bar called!'; }; } } 1;
“aaa.pl”はこんな感じ。
use strict; use warnings; use v5.10; BEGIN { use FindBin; use lib $FindBin::Bin; } use Bar; bar(); say 'bye!';
実行結果はこんな感じ。
$ perl aaa.pl
$caller is main
main::bar called!
bye!
Exporter
の実装がちょっとだけ、分かった気がします。
おしまい。
Leave a Comment