読者です 読者をやめる 読者になる 読者になる

本当は怖い情報科学

情報系大学院生の趣味&実益ブログ。

Perl Perl

現在、引き継いだPerlプログラムのデバッグ・保守をしているのですが、基本的に、大量のデータを処理するプログラムなので、ひとつのスクリプトが数十分〜数時間、全体で6〜10時間の間走らせておかねばなりません。

どうもこのスクリプトたちは入力チェックがイマイチらしく、スクリプトの途中で突然変数がundefinedになってwarningが出たり、あるはずの中間ファイルが開けなかったりしてdieするというケースが多いんです。
ここで言う入力値というのは、スクリプト外部からの入力値でもあり、ここの関数の
入力値でもあります。

ひどい部分だと、データがおかしい場合にエラーすら出さずに empty の出力を吐いてくれるので、エラーの検出・追跡が非常に困難です。

自分がスクリプトを書くときには当然テストドリブンに書いているわけですが、他のプログラマが書いたコードを他山の石(他人事ではないけど)として、入力値のェック、すなわち契約条件のチェックも重視してコーディングをしようと思いましたね。
CPANをあさったところ、

Carp::Assert::More

がヨサゲ。ちょっと使ってみることにします。

【広告】