mA
を使用しているクラス ()を拡張しようとしていSub::Exporter
ます。Sub::Exporter
サブクラス( )で使いたいmB
です。inmA
への呼び出しを通じて に固有のオプションを渡す方法がわかりません。ここにいくつかのテストコードがあります:Sub::Exporter
mB
#!/usr/bin/env perl
use 5.10.1;
use strict;
use warnings;
{
package mA;
use Sub::Exporter -setup => {
exports => { gmorn => \&build_gmorn },
};
sub build_gmorn {
my ( $class, $name, $arg ) = @_;
return sub { say "$arg->{salutation}"; }
}
sub new { return bless {}, shift }
}
{
package mB;
use parent -norequire, 'mA';
use Sub::Exporter -setup => {
exports => { gnite => \&build_gnite },
};
sub build_gnite {
my ( $class, $name, $arg ) = @_;
return sub { say "$arg->{salutation}"; }
}
}
{
package mFr;
use parent -norequire, 'mB';
mB->import(
gmorn => { salutation => 'Bon Jour' },
gnite => { salutation => 'Bon Nuit' }
);
}
my $obj = mFr->new;
$obj->gmorn();
$obj->gnite();
結果は次のとおりです。
% perl t
"gmorn" is not exported by the mB module at t line 66.
Sub::Exporter
仕様を継承する方法はありますか?