我正在尝试在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
答案 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路径的目录分隔符,或使用简单的正斜杠。