给大家推荐一下perl

tree_show.pl

#!/usr/bin/perl
sub list_dir{
if(-f $_[0]){
my @names=split "/",$_[0];
if($_[1]<0){
print "$names[@names-1] is just a file.\n";
return;
}else{
if($_[1]==0){
print " " x $_[1],"|\n";
print " " x $_[1],"+","-" x 2;
print "$names[@names-1]\n";
}else{
my $c=$_[1]/2;
print "|  " x $c,"|\n";
print "|  " x $c,"+","-" x 2;
print "$names[@names-1]\n";
}
return;}
}
else{
if(-R $_[0] and -O $_[0]){
my @names=split "/",$_[0];
if($_[0] eq "/"){
print "/\n";}
elsif(length($_[0])>1 and substr($_[0],-1,1) eq "/")
{print "",substr($_[0],0,length($_[0])-1),"\n";}
elsif($_[0] ne "/" and $_[1]<0){
print "$names[@names-1]\n";
}else{
  if($_[1]==0){
print " " x $_[1],"|\n";
print " " x $_[1],"+","-" x 2;
print "$names[@names-1]\n";}
  else{
my $c=$_[1]/2;
print "|  " x $c,"|\n";
print "|  " x $c,"+","-" x 2;
print "$names[@names-1]\n";
}
}
opendir DH,$_[0] or return;
my @files=readdir DH;
closedir DH;
for(my $i=0;$i<@files;$i++){
next if $files[$i] eq "." or $files[$i] eq "..";
if($_[0] eq "/"){
list_dir("/$files[$i]",$_[1]+2);}
elsif($_[0] eq "../" or $_[0] eq "./" or substr($_[0],-1,1) eq "/")
{list_dir("$_[0]$files[$i]",$_[1]+2);}
else{list_dir("$_[0]/$files[$i]",$_[1]+2);
}
}
}}
}
list_dir($ARGV[0],-2);

标签: 暂无标签
dongxujian

写了 86 篇文章,拥有财富 384,被 13 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2011-2-17 21:30:01
回复 kevin.zhang 的帖子

过年回家跟我弟学的!我的脚本水平一般!过奖了
回复

使用道具

P4 | 发表于 2011-2-17 17:07:44
服务器上的超过一半的脚本是用的perl。有时间研究一下。
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈