我正在使用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)。如果有人能给我一个如何解决这个问题的提示,我会很高兴。
答案 0 :(得分:2)
这里有两个问题:
创建所需文件。双击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
解决方案解决了这个问题。
通过双击运行脚本时,命令行将退出,然后才能检查输出。 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;