最近のPerlのExporter事情とかExporter::Liteとか
結論
use Exporter 'import'
で充分
説明
今のはてなでは割と標準的にExporter::Liteが使われている。Liteの方があんま余計なことしないからとは聞いてはいたが、それで依存増やすのもどうなのかなーとか思っていたので個人的にはこれまでExporterしか使ってなかった。Exporterは標準モジュールだし。Exporterにしてもuse parent 'Exporter'
なのかuse Exporter 'import'
なのかという流儀の違いがあって、個人的にはuse parent 'Exporter'
を使っていた。その辺りについて再考した。
ExporterかExporter::Liteか
もうあまりExporter::Liteを使う理由はないように感じる。
Exporterの最近のソースを読むと、かなりシンプルになっていることがわかる。
Exporterの複雑な機構は、Exporeter::Heavyというパッケージに追い出されていて、複雑な機能を使おうとするとそちらが遅延ロードされるようになっていて普段は使われない。
@EXPORT
と@EXPORT_OK
だけを使って、関数のみをエクスポートするだけであれば、Exporter::Lite以上にシンプル。例えばExporter::Liteはパッケージ変数のエクスポート機構とかがあるが、Exporter単体ではその処理はHeavyの方に書いてあるし、そういう機構はほとんどの場合必要ない。
なので標準的なユースケースではExporterの方がむしろ軽量なのでExporterを使うと良い。
use Exporter 'import'なのかuse parent 'Exporter'か
これはuse Exporter 'import'
で充分である。
以前use Exporter 'import'
だと変なことがあるとか聞いていて保守的にuse parent
してたが、単に継承しないとexport_to_level
とかが使えないとかそれくらいの話っぽいので、標準的なユースケースでは問題にならない。そもそもExporterを継承する必要はあまりない。
以下でもそんな話が出ている。Export::Tiny
というものがあるのを知ったが(ry
http://stackoverflow.com/questions/20765072/use-parent-exporter-vs-use-exporter-import
結論
先頭に戻る。