我一直在弄乱我的代码一个小时,但仍然没有进展。请听我说:这段代码今天早些时候工作了,它的作用是打开我给程序的目录,阅读它,然后打开目录中的每个文件并单独阅读它们以执行一些操作。
这是我打开和读取文件的方式:
use strict;
use warnings;
use File::Slurp;
my $dir = shift @ARGV;
opendir(DH, $dir) or die "Directory Open Error!";
my @filelist = grep !/^\.\.?$/, readdir(DH);
my $filename;
foreach $filename(@filelist){
open(FH, $filename) or die "File Open Error!";
my $readFile = read_file($filename);
#more code
}
所以这更早地工作,我已经看到代码执行了我想要它做的很好,但是当我在另一个目录上运行代码时它返回
文件打开错误!在 program.pl 第 15 行
在那之后,我再也无法让它工作了,无论我检查了多少,我仍然无法弄清楚出了什么问题。
由于错误在 open() 行,我首先确保传递了正确的文件名,所以我在目录打开后打印了文件名列表,一切看起来都很好。
然后我摆脱了打开目录部分,手动传递文件名:
$filename = shift @ARGV;
open(FH, $filename) or die "File Open Error!";
my $readFile = read_file($filename);
该程序工作正常,文件打开得很好。所以我摆脱了错误消息并返回到第一个代码,这就是我所看到的:
read_file 'somefile' - sysopen:program.pl 第 17 行没有这样的文件或目录
第 17 行是我使用 read_file 读取文件内容的行,这是在文件打开后发生的,我不明白现在发生了什么。同样,这段代码早些时候工作得很好,除了输入我真的没有改变任何东西,现在它完全停止工作