Perl Strawberry:如何通过单击运行perl脚本

时间:2013-09-02 12:31:49

标签: perl onclick strawberry-perl

我正在使用Windows 7,我已经安装了Strawberry。我想运行一个perl skript(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)。如果有人能给我一个如何解决这个问题的提示,我会很高兴。

2 个答案:

答案 0 :(得分: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.
    

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

    从命令行运行脚本时没有问题,因为您指定了正确的路径。但是如果你从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⏎

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

答案 1 :(得分:1)

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

不同
use Cwd;
print getcwd();
sleep 7;