Пытается открыть файл, расположенный на диске 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
заявление).