namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: supported document
knok@xxxxxxxxxxxxx (NOKUBI Takatsugu) wrote:
> 修正してみました。完全なチェックはできていないのですが、
>
>> # 翌朝、目覚めたら解決している、だったら嬉しいなと :-)
>
> そうであることを望みます :-)
だめでした。
% ./mknmz
Undefined subroutine &bzip2::tmpnam \
called at /home/satoru/cvs/namazu/src/../filter/bzip2.pl line 30.
これは、util.pl から package util; を取り去ったことが原因の
ようです。
まず、 mknmz 内で require "util.pl" 文が実行されると、
util.pl の内容が読み込まれ、 mknmz の package (namazu) の中
に取り込まれます。
次に、 mknmz から require "bzip2.pl" が呼ばれ、bzip2.pl の中
では require "util.pl" 文を実行しているわけですが、このとき、
util.pl はすでに一度、mknmz に読み込まれているので、 perl は
2重の読み込みを防ぎます。
よって、bzip2.pl からは tmpnam() が使えず、くだんのエラーに
なるわけです。ちとややこしいですね。 util:: を復活させること
で対応します。
# 思いきって util.pm にした方がいいかな? だとすると他の *.pl
# 類も .pm にしたくなるけど。(わりと面倒)
ところで、
# check filter modules
foreach my $module (<$filterdir2/*.pl>) {
ここは
# check filter modules
my @filters = glob "$filterdir2/*.pl";
@filters = glob "$FILTERDIR/*.pl" if @filters == 0;
for my $module (@filters) {
とい書いた方がいいです。
1. フィルタの置場所は 2つある (1つは相対パス[*1])
2. <*.pl> より glob "*.pl" が好ましい
3. foreach より for が好ましい (統一しましょう)
註1:
src ディレクトリから簡単に (make installすることなしに) 実
行できるように相対パスを @INC に入れています。これは原因の
わかりづらい災害の元になりそうなので --test オプションを導
入して、これを指定したときだけ相対パスを @INC に入れるとい
う仕様にした方がよさそうです。というわけで、そうします。
-- Satoru Takabayashi