пытается открыть файл, расположенный на диске D, в командной строке с помощью Perl - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь изучить обработку файлов в 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 ]

0 голосов
/ 27 сентября 2018

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

Мне пришлось пробежать с пробелом между <и D: / </p>

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...