0

我正在使用 Windows 7 并且我已经安装了草莓。我想运行一个 perl 脚本(test.pl):

open OUTPUT, ">test.txt";
print OUTPUT "This is a test\n";

只需单击文件或单击鼠标左键重定向到 Perl 程序(使用 /perl.exe 打开)。当我这样做时,控制台会打开不到一秒钟并消失,但不会创建文件 test.txt。如果我转到 MS 命令并输入

> C:\myplace>perl test.pl  

有用。我以前从未有过这种体验(WinXP、其他带有 ActivePerl 的 Windows 7 PC 和带有草莓的 Windows 8)。如果有人能给我提示如何解决这个问题,我会很高兴。

4

2 回答 2

2

这里有两个问题:

  1. 在您想要的位置创建文件。双击 perl 脚本启动它时,它不会在您在资源管理器中打开的文件夹的上下文中执行。如果要指定显式上下文,请在脚本顶部附近执行以下操作:

    use FindBin;  # This is a module that finds the location of your script
    BEGIN { chdir $FindBin::Bin }  # set context to that directory.
    

    当您创建一个没有绝对路径的新文件时,该路径被认为是相对于该目录的。

    从命令行运行脚本时没有问题,因为您指定了正确的路径。但是如果你从C:\喜欢的地方运行它

    C:\> perl myplace/test.pl
    

    那么您已经在C\test.txt. 解决方案解决了这个FindBin问题。

  2. 通过双击运行脚本时,命令行会在您检查输出之前退出。Windows 上的所有编程语言都存在这个“问题”。您可以通过等待某些输入来强制窗口保持打开状态。你可以做

    system("PAUSE");  # not portable to non-Windows!
    

    或者

    warn "Press enter to exit...\n";
    <STDIN>;  # Read a line from the command line and discard it.
              # Feels akward when launching from the command line
    

    等到一个Enter ⏎</kbd> is pressed .

    另一种解决方案是始终为您的脚本使用命令行,这是我实际建议的。

于 2013-09-03T03:01:49.473 回答
1

检查您的脚本执行文件夹是什么,因为它可能与C:\myplace

use Cwd;
print getcwd();
sleep 7;
于 2013-09-02T12:38:41.210 回答