【发布时间】:2009-10-13 02:30:15
【问题描述】:
好吧,我知道这是另一个新手问题,但我非常沮丧,我希望再次获得启发。在各位的指导下,我已经学会了如何使用glob函数来读取目录中每个文件的内容。现在我正在尝试使用 readdir-foreach 组合来做同样的事情,但我一直收到“无法打开文件:权限被拒绝”错误。为什么这种情况发生在与管理员相同的目录、相同的文件和相同的我。有人可以告诉我我做错了什么吗?谢谢。
以下代码使用了 glob 函数并且可以正常工作:
#! perl
my $dir = 'f:/corpus/';
my @files = glob "$dir/*";
foreach my $file (@files) {
open my $data, '<',"$file" or die "Cannot open FILE";
while(<$data>) {
...}
以下代码失败并且错误消息显示“无法打开文件:权限被拒绝”。但为什么?
#! perl
my $dir = 'f:/corpus/';
opendir (DIR,'f:/corpus/') or die "Cannot open directory:$!";
my @files=readdir(DIR);
closedir DIR;
foreach my $file (@files) {
open my $data, '<',"$file" or die "Cannot open FILE:$!";
while(<$data>) {
...}
【问题讨论】:
-
在你的死亡笔记中,你应该包含文件名($file),而不仅仅是指定文件。你应该在 opendir() 调用中使用变量 $dir - 并在死亡笔记中使用它。
-
是的,在我的死亡笔记中有 $file,错误信息似乎更具体。运行原始代码给我“无法打开。:权限被拒绝。猜想是因为没有应用 bobbymcr 建议的过滤器。感谢提醒!