我正在使用glob来获取目标目录中所有文件的列表。这适用于我的笔记本电脑,但不适用于我的服务器。
这是我的代码:
my $dir = "c:/MyTargetDir";
@files = glob "$dir/*.*";
print $dir . "\n";
print $#files;
结果:
c:/MyTargetDir
0
我已经设置了文件夹安全设置以允许每个人进行修改,但它仍然无法正常工作。可能导致这种情况的原因是什么?
更新:
确定这是另一种noob假设的例子。思考$#files
将显示数组中对象的数量,但它实际上显示的实际数量少了一个,用于for (0..$#files)
循环。问题实际上在其他地方但我错误地假设了。感谢您的投入。
答案 0 :(得分:3)
如果MyTargetDir
实际上包含空格,则需要use bsd_glob
instead,它将空格视为文件名的一部分。
use File::Glob ':bsd_glob';
@files = bsd_glob "$dir/*.*";
否则,您的代码似乎没有问题,并且您可能仍然存在权限问题。您应该检查$!
以查看是否收到错误。
如果您想简单地获取目录中的所有文件,readdir
可能是更好的解决方案