2016-01-22 4 views
0

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

Мой вопрос: почему я не могу открыть файл, на который я ссылаюсь в своем пути к файлу?

open(my $in, "<", "ioFile.txt") or die "Can't open input.txt: $!"; 

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

Любые советы об открытии этого конкретного файла или файлов в целом на Perl были бы весьма признательны.

После Edit:

Это может быть права доступа к файлу, но у меня есть read и write разрешения на файл, но не full control разрешения. Я нахожусь в Windows 7.

+1

Если он находится в одной папке, вы не должны использовать '. ./ioFile.txt' 'вместо этого? ('..' относится к предыдущей папке в дереве каталогов) – AntonH

+0

, если файл находится в том же каталоге, что и скрипт, удалите' ../ ', поэтому путь к файлу отображается как« ioFile.txt »' – stevieb

+0

I «Пробовал оба эти метода раньше, и оба дают ту же ошибку», не могу открыть файл input.txt: Нет такого файла или каталога в строке C: \ filepath 303, строка 1', но я удалил '../', поэтому никто другой не предполагает, что это ошибка, вызвавшая проблему. Спасибо за ввод – pHorseSpec

ответ

2

Если вы не используете сценарий, пока вы находитесь в каталоге скрипт и файл, который вы хотите open находятся, то вы должны указать полный путь к файлу:

open my $in, '<', 'c:\path\to\ioFile.txt' or die "Can't open input.txt: $!"; 

perl будет искать входной файл из местоположения, в котором вы используете скрипт , от, а не в каталоге, который имеет сценарий в (опять же, если вы не находитесь в этом каталоге при запуске скрипта).

+1

Не делайте эти двойные обратные косые черты. Почему бы не переключиться на одну кавычку и не потерять их - ''c: \ path \ to \ ioFile.txt''. –

+2

не знаю, о чем я думал. Я почти всегда на nix, поэтому я обычно использую косые черты, которые никогда не нужно избегать (даже на окнах, поэтому я не знаю, почему я так не делал этого. – stevieb

Смежные вопросы