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

ctr*_*yan 2 perl

我想在perl中输出一个文件.

我像这样打开文件和输出..

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

哪个效果很好.如果我把它改成这个

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

它运行正常(我没有得到'无法打开output.txt'消息),但当我在目录中查看我刚输出的文件不存在.如果我没有路径,则在bin中找到该文件.

我在这里错过了什么?如何让它输出另一个位置.

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

cd\

cd \xampp\perl\bin

perl "C:\somedirectory\languages.pl"

pause
Run Code Online (Sandbox Code Playgroud)

eph*_*ent 10

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

print "abc\tdef";
# abc     def
print "c:\somedirectory\output.html";
# c:somedirectoryoutput.html
print qq(c:\somedirectory\output.html);
# c:somedirectoryoutput.html
Run Code Online (Sandbox Code Playgroud)

您可以将反斜杠加倍,以便让它们通过双引号.

print "c:\\somedirectory\\output.html";
# c:\somedirectory\output.html
print qq(c:\\somedirectory\\output.html);
# c:\somedirectory\output.html
Run Code Online (Sandbox Code Playgroud)

您可以使用单引号而不是双引号,因为转义序列不能在单引号内识别.

print 'c:\somedirectory\output.html';
# c:\somedirectory\output.html
print q(c:\somedirectory\output.html);
# c:\somedirectory\output.html
Run Code Online (Sandbox Code Playgroud)

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

open(my $out, ">", "C:/somedirectory/output.html");
Run Code Online (Sandbox Code Playgroud)