perl -d 检察是否是目录

mirrorspace 2011-02-10 02:09:54
您好?
环境是WXP PERL5
在一个有文件也有目录的路径下,用-d检测目录不好用。检测下来应为目录的还是为文件。除了 。(当前) 和 。。(上级)外。
在线等解决。
...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirrorspace 2011-02-10
  • 打赏
  • 举报
回复
谢谢了。-d 之后的判定对象要用绝对路径,不然就出现误判。
看着奢扣 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mirror030 的回复:]

这个运行后没有结果,为什么呀?
[/Quote]
有结果啊,代码都给你了 我这试了没问题
readdir返回的不是绝对路径,要加上前边的filename
mirrorspace 2011-02-10
  • 打赏
  • 举报
回复
可以行了。结果正确了。但解释下为什么要加入路径呢?
iambic 2011-02-10
  • 打赏
  • 举报
回复
readdir返回的是文件名,不是完整路径。你代码里的这些问题你自己多打点log就看出来了。
另外代码里加上:
use strict;
use warnings;

不加上就是浪费大家的时间。
mirrorspace 2011-02-10
  • 打赏
  • 举报
回复
这个运行后没有结果,为什么呀?
看着奢扣 2011-02-10
  • 打赏
  • 举报
回复
另外,-f会把windows下的隐藏文件也计算进去的 这个统计时要注意一下。
看着奢扣 2011-02-10
  • 打赏
  • 举报
回复
判断这个应该加上全部的路径吧 你试试我改的例子吧

#!/usr/bin/perl
$filename='c:\doc';
opendir(FILE,$filename) or die('erroe not open c:/doc');
out_filename();
closedir(FILE);
sub out_filename
{
@news_fs=readdir(FILE);
foreach(@news_fs){
print "$_\n";
$aa = $filename.'\\'.$_;
(-d $aa) ? $d++ : $f++;
}
print "totle ----$f---- files ----$d---- dirs";#totle the files
}
mirrorspace 2011-02-10
  • 打赏
  • 举报
回复
#!/usr/bin/perl
$filename='E:\doc\taobao';
opendir(FILE,$filename) or die('erroe not open e:/doc');
out_filename();
closedir(FILE);
sub out_filename
{
@news_fs=readdir(FILE);
foreach(@news_fs){
print "$_\n";
(-d $_) ? $d++ : $f++;
}
print "totle ----$f---- files ----$d---- dirs";#totle the files
}
结果是
F:\diree>perl test.pl
.
..
726909812385.jpg
iTrusPTA.exe
新建文件夹
新建文件夹 (2)
新建文件夹 (3)
totle ----5---- files ----2---- dirs
iambic 2011-02-10
  • 打赏
  • 举报
回复
贴代码,贴代码运行结果。

37,718

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧