【发布时间】:2014-06-16 12:50:21
【问题描述】:
我在 Windows 7 x86 下运行 perl,当我调用从另一个脚本执行外部命令的子例程时出现错误。
我有两个脚本,script1 有一个执行程序 (patt.exe) 的子例程,script2 通过require 使用这个子例程。
当我运行 script1 时,它可以正常工作。但是当我尝试从 script2 内部使用这个子例程时,我得到了以下错误。
错误:
'patt.exe' is not recognized as an internal or external command, operable program or batch file.
脚本1:
#patt('file.txt');
sub patt {
my $filename=shift@;
system("cmd.exe /c patt.exe -S $filename");
}
1;
脚本2:
require 'sub-directory/script1.pl';
patt('file.txt');
我应该提到 script1 和 patt.exe 位于子目录(require 'sub-directory/script1.pl';)中,当我将所有文件放在同一目录中时(@987654327 @) 一切正常。如果我使用qx 或者当我将参数作为数组传递给脚本时,这个问题仍然存在。
如果有人能帮助我,我将非常感激。
【问题讨论】:
-
-f "patt.exe" or die "must be in some other folder";就在system通话之前 -
@mpapec,当我将脚本和 .exe 文件放在同一目录中时,它可以正常工作。目前“script1”和“patt.exe”位于 sub_directory 和 script2 中,我提到“需要 'sub_directory/script1.pl';”。什么可能是错的?!无论如何我可以将带有子例程脚本的 .exe 文件放在单独的文件夹中吗?
-
这是windows问题;使用完整的 .exe 路径或将其放入系统 PATH。