Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: フォルダ名の最後が「表」の場合のインデックス作成
- From: 村井 俊文 <murai.t-fs@xxxxxxxxx>
- Date: Fri, 16 Aug 2002 11:49:15 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 01435
村井と申します。
5月に投稿した内容に誤りがありましたので訂正します。
Perl のプログラムの中で、配列の要素を「$」でなく「@」
で始めておりました。初歩的な勘違いでお恥ずかしい次第です。
このように記述しても Perl はエラーメッセージも出さず、
適宜実行してくれます。従って前のままで問題はないとは思
いますが、誤りであることに間違いありませんので、訂正し
ます。失礼いたしました。
///////////////////////////////////////////////////
変更対象 : \namazu\bin\ の中にある mknmz
(拡張子の無いもの、 mknmz.bat ではない)
この中の find_target というサブルーチンの内部に下記のよ
うなサブルーチン(x_search)を加えると共に、5行をコメ
ント化し、3行を追加する。
///////////////////////////////////////////////////
#
# Wanted routine for File::Find's find().
#
# my $wanted_closure = sub { # コメント化
# my $fname = "$File::Find::dir/$_"; # コメント化
# add_target($fname, \@flist, \%counts); # コメント化
# };# コメント化
# find($wanted_closure, @subtargets) if (@subtargets > 0);#
コメント化
for my $XS (@subtargets){ # 追加
&x_search($XS); # 追加
} # 追加
} else {
print STDERR _("unsupported target: ") . $target;
}
}
#追加 ここから
sub x_search($){
my @xd_names=();
my $xd_count=0;
my @x_names=();
my ($xd0) = @_;
if ($xd0 =~ /\/\z/ ){ # 最後に'/'が付いていればそのまま
$xd_names[$xd_count] = $xd0;
}
else{ # '/'を付加
$xd_names[$xd_count] = $xd0 . '/';
}
while ($xd_count >=0) {
my $xd1=$xd_names[$xd_count];
if (opendir (XDIR,$xd1)){
@x_names=readdir XDIR;
closedir XDIR;
for my $XN (@x_names){
next if $XN =~ /^\.{1,2}\z/; # "." ".." だったら next
my $xd2 = $xd1 . $XN;
if (-f $xd2){ # ファイルの場合はflistに追加
add_target($xd2, \@flist, \%counts);
next;
}
my $xd3 = $xd2 . '/';
if (-d $xd3){ # ディレクトリの場合は自分の配列に追加
$xd_names[$xd_count++]= $xd3;
next;
}
print "Unknown type $xd2\n";
next;
}
}
else{
print "Can't opendir $xd1\n";
}
$xd_count--;
}
return;
}
#追加 ここまで
# uniq @flist
my %mark = ();
@flist = grep {$mark{$_}++; $mark{$_} == 1} @flist;
# Sort file names with consideration for numbers.
@flist = map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { my $tmp = $_; $tmp =~ s/(\d+)/sprintf("%08d",
$1)/ge;
[ $_, $tmp ] } @flist;
///////////////////////////////////////////////////
村井 俊文 E-mail:murai.t-fs@xxxxxxxxx