Perl: Как мне написать в каталог, кроме bin? - PullRequest
2 голосов
/ 28 февраля 2010

Я пытаюсь вывести файл в Perl.

Я открываю файл и выхожу вот так ..

open(my $out, ">",  "output.html") or die "Can't open output.txt: $!";
print $out "something!";

Который работает идеально. Если я изменю это на

open(my $out, ">",  "c:\somedirectory\output.html") or die "Can't open output.txt: $!";
print $out "something!";

Он работает нормально (я не получаю сообщение «Не удается открыть файл output.txt»), но когда я смотрю в каталоге, файл, который я только что выводил, отсутствует. Если я оставлю его без пути, файл будет найден в корзине.

Что мне здесь не хватает? Как мне заставить его выводить другое местоположение.

Также .. Я запускаю .pl, используя этот файл .bat.

cd\

cd \xampp\perl\bin

perl "C:\somedirectory\languages.pl"

pause

Ответы [ 2 ]

10 голосов
/ 28 февраля 2010

В двойных кавычках \ запускает escape-последовательность. Нераспознанные побеги просто игнорируются.

print "abc\tdef";
# abc     def
print "c:\somedirectory\output.html";
# c:somedirectoryoutput.html
print qq(c:\somedirectory\output.html);
# c:somedirectoryoutput.html

Вы можете удвоить обратную косую черту, чтобы они могли пройти через двойные кавычки.

print "c:\\somedirectory\\output.html";
# c:\somedirectory\output.html
print qq(c:\\somedirectory\\output.html);
# c:\somedirectory\output.html

Вы можете использовать одинарные кавычки вместо двойных, поскольку escape-последовательности не распознаются в одинарных кавычках.

print 'c:\somedirectory\output.html';
# c:\somedirectory\output.html
print q(c:\somedirectory\output.html);
# c:\somedirectory\output.html

И последний вариант: API Win32 и NT с радостью рассматривают / как разделители каталогов так же, как и \. Хотя это может выглядеть странно, но будет работать и следующее:

open(my $out, ">", "C:/somedirectory/output.html");
4 голосов
/ 28 февраля 2010

Вы должны использовать двойную обратную косую черту в качестве разделителей каталогов для окон Windows или использовать простые прямые косые черты.

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