weblog of key_amb

主にIT関連の技術メモ

Perl でテスト可能なスクリプトを書く

職場でとある Perl スクリプトを改修する機会があった。

元々ぺら一枚のスクリプトだったのだが、これを機に App::Hoge::CLI (仮称) のようなモジュールを作ろうとした。

すると、pull-request の時に「使い回しのできないものをモジュールにしないほうがいい」というような指摘を受けた。

でもテストできないしどうするかな、とそれまで思っていたのだが、このとき次の方法を教えて頂いた。

main() if $0 eq __FILE__;

sub main {
    :
}

モジュールとして使いたいコードがあったら、スクリプトに package 宣言して同梱してしまえばいい。

他で使い回しできなさそうなコードは、スクリプトにまとめてしまったほうがいいケースもありそうですね!

ちょっとぐぐってみたところ、同じようなやり方をしている記事をいくつか見かけたので、リンクを貼っておきます。

参考

Perlで一枚岩のスクリプトをテスタブルにする | おそらくはそれさえも平凡な日々

ドキュメントとテストコードつきのPerlスクリプトを書く方法 - kazuhoのメモ置き場