Exporter を継承しつつ import を override するとき

  • 投稿日:
  • by
  • カテゴリ:  

Exporter を継承しているクラスで import を override するには、親(Exporter) の import を呼んであげないといけないんだけど、その呼び出し方がひと味違うらしい。

export_to_level を呼び出してやる。引数の意味は以下のとおり。

export_to_level($where_to_export, $package, @what_to_export)

ようは caller 呼び出すんですな。でも、そもそもこんなケースは特殊のような気がするので、

export_to_level(1, @_)

という決まり文句でぼんやり覚えておくことにする。

そもそもこれにたどり着いたきっかけは、テストコード用のユーティリティ集めた Utility パッケージ書いてて、テストコード本体のほうにもろもろ use を毎回閣の面倒だから sub import で import したれ、とおもって書いたところ、@EXPORT で export してた関数が Undefined subroutine になってしまったというところでした。