Пытается открыть файл, расположенный на диске D, в командной строке с помощью Perl

Я пытаюсь изучить обработку файлов в Perl, я хочу открыть файл.txt, расположенный на диске D: на терминале Windows в режиме чтения, поэтому код, который я использую, выглядит так:

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.

что это значит?

2 ответа

В комментарии вы говорите:

Мне пришлось бежать с пробелом между <и 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 линия (на самом деле, $_ там тоже необязательно).
  • Легкое переформатирование, чтобы сделать его более читабельным.

Вы уверены, что файл D:/pay_info.txt существует? Perl не может найти этот файл в базовой папке диска D: (в этом смысл сообщения об ошибке, напечатанного вашим die заявление).

Другие вопросы по тегам