Glob在本地计算机上工作无法检测远程文件

时间:2014-03-28 08:09:04

标签: windows perl glob

我正在使用glob来获取目标目录中所有文件的列表。这适用于我的笔记本电脑,但不适用于我的服务器。

这是我的代码:

my $dir = "c:/MyTargetDir";    
@files = glob "$dir/*.*";
print $dir . "\n";
print $#files;

结果:

c:/MyTargetDir
0

我已经设置了文件夹安全设置以允许每个人进行修改,但它仍然无法正常工作。可能导致这种情况的原因是什么?

更新:

确定这是另一种noob假设的例子。思考$#files将显示数组中对象的数量,但它实际上显示的实际数量少了一个,用于for (0..$#files)循环。问题实际上在其他地方但我错误地假设了。感谢您的投入。

1 个答案:

答案 0 :(得分:3)

如果MyTargetDir实际上包含空格,则需要use bsd_glob instead,它将空格视为文件名的一部分。

use File::Glob ':bsd_glob';
@files = bsd_glob "$dir/*.*";

否则,您的代码似乎没有问题,并且您可能仍然存在权限问题。您应该检查$!以查看是否收到错误。

如果您想简单地获取目录中的所有文件,readdir可能是更好的解决方案