这个脚本是显示精华区的索引, 运行 ./dirtree.pl boardpath
每个文件的 title 有些特殊设置:
if title 含 [推荐] { [推荐] 显示为粉红色 }
if 是目录 {
显示为蓝色 ;
if title 含 [专集] { 不列此目录内容, [专集] 显示为红色 }
if title 含 [杂牌] { 不列此目录内容, [杂牌] 显示为黄色 }
if title 含 [N] { 不列此目录内容, [N] 显示为..色 }
//这几个设置是为了避免索引太胖, 有些标题没信息量的, 版主屏蔽掉它
}
$ cat dirtree.pl
#!/usr/bin/perl
#dirtree.pl yourdir
#write by wind@lostemple.dhs.org
# Altmayer@lostemple.dhs.org
# 2002.04.17
#@flag=("┣","━","┗","┳","┃");
$/ = "#\n";
print("^[[1;0;37;41m本版精华区索引^[[m\n");
dirlist($ARGV[0], "┣━",FD);
sub dirlist(){
my $dir=$_[0];
my $pre=$_[1];
my $fd=$_[2];
open($fd,"<$dir/.Names") || die "hehefaint cant find the file";
my $newline=<$fd> || die "empty file";
while($pre=~/┣/){
my @array=split(/\n/,$newline,-1);
$newline=<$fd> || $pre=~tr/┣/┗/;
my $name=$array[0];
if($name =~ m/(Name)=(.*)/){
my $title=$2;
my $path=$array[1];
$path =~ m/(Path)=~\/(.*)/;
my $file=$2;
$title=~s/\[推荐\]/^[\[1;35m\[推荐\]^[\[m/;
if(-d "$dir/$file"){
$title="^[[1;34m$title^[[m";
if( $title=~s/\[专集\]/^[\[1;31m\[专集\]/||
$title=~s/\[杂牌\]/^[\[1;33m\[杂牌\]/||
$title=~s/\[N\]/^[\[1;36m\[N\]/){
print("$pre$title\n");
}
else{
$newpre=$pre;
$newpre=~tr/━/┳/;
print("$newpre","$title\n");
$newpre="$pre";
$newpre=~tr/┣┗━/┃ ┣/;
$newpre="$newpre━";
dirlist("$dir/$file","$newpre","$fd1");
}
}
else{
print("$pre$title\n");
}
}
}
close($fd);
}
--