【发布时间】:2010-12-20 09:52:49
【问题描述】:
sub dir_list1
{
$path=$_[0];
while(<$path/*>){
if (-f "$_"){
print "$path/$_\n";
}
else {
print "dir: $path/$_\n";# if ($entry ne "." && $entry ne "..");
dir_list1($_);
}
}
}
dir_list1(".");
当我执行上面的代码时,它首先打印当前目录的所有内容,然后继续列出子目录的内容。遇到子目录是不是应该不进入子目录,列出里面的文件,然后从父文件夹继续?
谢谢。
[编辑,回应 OrangeDog]
我在 Windows 上使用此代码。输出是这样的:
一个.txt
b.txt
目录:./images
c.txt
d.txt
...
[然后列出图像文件夹]
./images/qwe.jpg
./images/asd.jpg
./images/zxc.jpg
...
【问题讨论】:
-
你怎么知道你的文件系统不只是返回列表末尾的目录?
-
@David:我将研究函数在 Perl 中的工作方式。我想那是我出错的地方。您能否发布此代码的更正版本供我查看?
-
这与函数无关,只是全局。
-
阅读 David 的评论,并将其铭刻在你的脑海中,除非你正在编写一个快速肮脏的“凌晨 2 点”脚本,使用
strict和warnings(和diagnostics可选)是绝对必要的! :) -
我想说这甚至适用于快速而肮脏的凌晨 2 点脚本:)
标签: perl