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