namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ディレクトリによる検索対象の指定



岸です。
にたようなこと考える人はやっぱりいるんですね。

> ちょださーですが,
>	:
> みたいにしてたりします.もうちょっとましなコードをどなたか
> おくんなまし.

だささのれべるは同じですが、perl ででっちあげたものです。
name=path の value で対象となるパスを指定できます。
以外と速いぞ。

#!/usr/local/bin/perl

$cmd_namazu = './namazu';

# QUERY_STRING から path= を分離する
foreach $s (split(/\&/, $ENV{'QUERY_STRING'})) {
    if ($s =~ /^path\=/) {
        $path = $';
    } else {
        push(@q, $s);
    }
}

# QUERY_STRING の key= に path をくっつける
if ($path =~ /\S/) {
    foreach $q (@q) {
        last if ($q =~ s/^key\=/key\=\%2Bpath:$path+\%26+/);
    }
}
$ENV{'QUERY_STRING'} = join('&', @q);

$path =~ s/%([\da-fA-F]{2})/chr(hex($1))/eg;

# なまずにわたす
open(IN, "$cmd_namazu |") || die "Can't exec $cmd_namazu";
$in = join('', <IN>);
close(IN);

# なまずの出力をちょちょいといじる
if ($path =~ /\S/) {
    $in =~ s/(<form.*?\>)/$1\n<input type=\"hidden\" name=\"path\" value=\"$path\">/io;
    $in =~ s/VALUE\=\"\+path:$path \&amp; /VALUE\=\"/o;
}
print $in;

exit 0;

--
ソニー株式会社 映像ソフトセンター ホームページ室	岸 康司
		kis@xxxxxxxxxxxxxxxxx || kis@xxxxxxxxx