Perl系统访问被拒绝

0 perl system

我作为管理员在Windows机器上运行以下命令

system("tracert 192.168.63.1 > d:\netmon\test.txt");
Run Code Online (Sandbox Code Playgroud)

输出是拒绝访问.在不创建文件的情况下运行tracert工作正常.那么为什么我不能在现有的netmon目录中创建文件.我可以完全访问该目录.

有人能指出我正确的方向.谢谢

mob*_*mob 7

在Perl中,反斜杠(\)是双引号内的特殊字符,用于"转义"其他特殊字符或指定其他不可取消的字符.您的示例中包含的序列"\n""\t"分别用于生成换行符和制表符.

要在双引号内生成文字反斜杠字符,我们使用两个连续的反斜杠字符,因此:

system("tracert 192.168.63.1 > d:\\netmon\\test.txt");
Run Code Online (Sandbox Code Playgroud)

将产生你想要的结果.

Perl将单引号('')括起来的字符串与双引号区别对待.单引号内部,\并不是一个特殊的字符(实际上,它仍然有点特殊,但比双引号内部特别少),所以您也可以将表达式编写为:

system('tracert 192.168.63.1 > d:\netmon\test.txt');
Run Code Online (Sandbox Code Playgroud)