我想在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)