nmzcat と %FIELD_ALIASES と変数の初期化2008年05月02日 13時05分49秒

nmzcat は %FIELD_ALIASES (つまり、フィールドの別名)を考慮していないようです。このため、

$ nmzcat msg00000.html

では、author が取り出せていません。

$Document->get_field_info('author');

で、直接 $self->{'_field_info'}{author}; を参照しています。 多くのメディアタイプでは author に著者が入りますが、filter/mhonarc.pl ではfrom に著者が入るためです。

これはこういう仕様だと考えて、nmzcat に "from:" の表示項目も追加するという方法もありますが、$self->{'_field_info'} が %FIELD_ALIASES を考慮した方が良いのではないかと思います。

%FIELD_ALIASES を考慮しようとすると、mknmz の complete_field_info と clean_field_index に相当する処理を行った上でget_field_info でエイアスの参照を行う必要があるでしょう。


ところで、development-2-1 の filter/html.pl の htmlparser_filter では、$fields->{'title'}, $fields->{'author'} を undef で初期化しています。

このため、init_doc で行った '_field_info' の初期化を壊すので、

$ nmzcat msg00000.html

では、$self->{'_field_info'}{author} が未定義となり、

Use of uninitialized value in concatenation (.) or string at /usr/local/bin/nmzcat line 82.

が発生します。 undef で初期化している部分をコメントアウトすれば、このエラーは消えますが、htmlparser_filter 内の処理で $fields->{'title'}, $fields->{'author'} は undef で初期化していることが前提のようなので、別の問題がでそうです。

というところまで調べて力尽きました。

コメント

コメントをどうぞ

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

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

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

トラックバック

このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2008/05/02/3437696/tb

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