adnmz, kwnmz, lnnmz の不具合 : カレントディレクトリにインデックスがない場合2005年09月13日 22時28分45秒

カレントディレクトリにインデックスがない場合に次のコマンドを実行すると、下記のようなメッセージが出力されます。

引数なしで実行すると、カレントディレクトリのインデックスを処理の対象とするように作られているのですが、インデックスがない場合の処理が含まれていないようです。


$ adnmz
Use of uninitialized value in -s at nmzidx.pl line 205.
Use of uninitialized value in division (/) at nmzidx.pl line 205.
Can't call method "read" on an undefined value at nmzidx.pl line 223.



$ kwnmz
Use of uninitialized value in -s at nmzidx.pl line 205.
Use of uninitialized value in division (/) at nmzidx.pl line 205.



$ lnnmz
Use of uninitialized value in -s at nmzidx.pl line 205.
Use of uninitialized value in division (/) at nmzidx.pl line 205.
Can't call method "close" on an undefined value at nmzidx.pl line 212.

コメント

_ opengl2772 ― 2005年09月24日 19時07分29秒

namazu, mknmz では、NMZ.i ファイルの有無でインデックスの有無を判断しますので、NMZ.i ファイルの有無をチェックしてない場合はエラーメッセージを表示するのが良いようです。

_ opengl2772 ― 2005年09月24日 22時17分45秒

NMZ.i ファイルの存在を確認し、ファイルが存在しない場合はエラーメッセージを表示して終了するようにしました。
(namazu, mknmz 共にインデックスの有無の確認にNMZ.i を使用しているため)

ところで、open_field 等の open の後に {'t'} が未定義かどうかを調べる方法もあるようですが、面倒なので...。

my $fh = $nmzi->open_field;
if (!defined $fh->{'t'}) {
# 終了
}

nmzidx を 'r' モードで new した際に、NMZ.i の有無を調べてなければ undef を返す。というのでも良いかなと思いますが...。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2005/09/13/74105/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。