我想使用'system'命令从perl脚本调用应用程序。但是,应用程序放在一个单独的目录中。如何在perl脚本中从该目录调用应用程序。我可以使用“要求”吗?
答案 0 :(得分:3)
如果要在应用程序所在的目录中运行应用程序,则只需更改目录即可。请参阅chdir
中的perlfunc
命令。
否则,只需添加如下路径:
system('/path/to/the/application');
答案 1 :(得分:0)
不,require
不起作用 - require
用于引入其他perl文件一次。当然,如果您要调用的文件是一个perl程序......那么,最好将您希望在两个程序之间共享的部分分解出去,而不是require
,或者如果你不想这样做就把它简单地当作黑盒子来对待。
要调用既不在搜索路径中的可执行文件 - 只是位于同一目录中是不够的! - 提供完整路径,例如system
,exec
和& c ..对于系统,首选表单为:
system { '/path/to/executable' } 'argument 0 (i.e. $0) supplied to program', 'argument 1 (equivalent to $ARGV[0])', ...;
或
# $path = ...
system $path 'arg 0', 'arg 1', ...;
或
# $path = ...
system $path @args;
当然,如果出现错误,最好检查每个系统调用的结果。
注意在每种情况下使用indirect-object(即使用不带逗号的参数传递,如打印等的fh)system
!除非你非常清楚自己在做什么以及为什么这样做,否则很难使用system
的单参数形式来推荐风险,因为它使你的输入受到shell预处理的影响。
详情请咨询perldoc -fsystem
和perldoc -fexec
。