代码之家  ›  专栏  ›  技术社区  ›  ctrlShiftBryan

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

  •  2
  • ctrlShiftBryan  · 技术社区  · 16 年前

    我打开文件,然后像这样输出。。

    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”消息),但是当我查看目录时,我刚刚输出的文件不在那里。如果没有路径,文件就会在垃圾箱中找到。

    我错过了什么?如何让它输出到另一个位置。

    cd\
    
    cd \xampp\perl\bin
    
    perl "C:\somedirectory\languages.pl"
    
    pause
    
    2 回复  |  直到 16 年前
        1
  •  10
  •   ephemient    16 年前

    在双引号内, \ 启动转义序列。未识别的转义将被忽略。

    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
    

    / 作为目录分隔符 \ . 虽然看起来有些奇怪,但以下方法也会奏效:

    open(my $out, ">", "C:/somedirectory/output.html");
    
        2
  •  4
  •   Otto Allmendinger    16 年前

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