Perl:如何写入除bin之外的目录?

时间:2010-02-28 20:11:30

标签: perl

我正在尝试在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'消息)但是当我在目录中查看我刚输出的文件时不存在。如果我把它留在没有路径的情况下,文件就会在垃圾箱中找到。

我在这里缺少什么?如何让它输出另一个位置。

另外..我使用这个.bat文件运行.pl。

cd\

cd \xampp\perl\bin

perl "C:\somedirectory\languages.pl"

pause

2 个答案:

答案 0 :(得分:10)

在双引号内,\启动转义序列。无法识别的转义只是被忽略了。

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

您可以使用单引号而不是双引号,因为单引号内无法识别转义序列。

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

最后一个选项:Win32和NT API很高兴地将/视为目录分隔符以及\。虽然它可能看起来很奇怪,但以下内容也适用:

open(my $out, ">", "C:/somedirectory/output.html");

答案 1 :(得分:4)

您必须使用双反斜杠作为Windows路径的目录分隔符,或使用简单的正斜杠。