0

我正在尝试学习 Perl 中的文件处理,我想以读取模式打开位于 Windows 终端上 D: 驱动器中的 .txt 文件,因此我使用的代码如下:

open(DATA, "<D:/pay_info.txt") or die "Couldn't open file pay_info.txt, $!";
while(<DATA>) 
{ print "$_";}

它总是显示

无法打开文件 pay_info.txt,在 C:\perl\perl2.pl 第 1 行没有这样的文件或目录。

这是什么意思?

4

2 回答 2

1

在评论中,你说:

我必须在 < 和 D:/ 之间使用空格

使用 的三参数版本open可以避免这个问题。多年来,这一直是 Perl 文档中推荐的方法。

open(my $fh, '<', 'D:/pay_info.txt')
  or die "Couldn't open file pay_info.txt, $!";

while (<$fh>) {
  print $_;
}

我改变了一些其他的东西:

  • 使用词法文件句柄 ( $fh) 而不是全局文件句柄 ( DATA)。实际上,DATA它是 Perl 中的一个特殊文件句柄,因此不应在大多数代码中使用它。
  • 尽可能切换到使用单引号(单引号字符串识别的特殊字符较少,因此尽可能使用它们是个好主意)。
  • 删除了行中不必要的引号print(实际上,$_那里也是可选的)。
  • 轻松重新格式化以使其更具可读性。
于 2018-09-27T09:02:08.693 回答
0

您确定该文件D:/pay_info.txt存在吗?Perl 无法在驱动器的基本文件夹中找到该文件D:(这就是您的die语句打印的错误消息的含义)。

于 2018-09-25T18:42:37.783 回答