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

Perl:如何写入bin之外的目录?,perl,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 "somet

我正在尝试用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!";
它确实运行良好(我没有收到“cannotopenoutput.txt”消息),但是当我在目录中查找时,我刚刚输出的文件不在那里。如果我不带路径,文件就会在垃圾箱中找到

我错过了什么?如何将其输出到另一个位置

还有。。我正在使用这个.bat文件运行.pl

cd\

cd \xampp\perl\bin

perl "C:\somedirectory\languages.pl"

pause

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

在双引号中,
\
启动转义序列。无法识别的逃逸被忽略

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
您可以使用单引号而不是双引号,因为单引号中无法识别转义序列

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");

奇怪的是,我没有收到“无法打开output.txt”消息。但是谢谢@ctrlShiftBryan这是因为它成功地打开了一个文件,而不是在你要找的地方。给定时间,您将找到意外创建的垃圾文件。:)老实说,我认为反斜杠看起来更奇怪