从perl脚本调用应用程序

时间:2013-05-28 20:00:31

标签: perl

我想使用'system'命令从perl脚本调用应用程序。但是,应用程序放在一个单独的目录中。如何在perl脚本中从该目录调用应用程序。我可以使用“要求”吗?

2 个答案:

答案 0 :(得分:3)

如果要在应用程序所在的目录中运行应用程序,则只需更改目录即可。请参阅chdir中的perlfunc命令。

否则,只需添加如下路径:

system('/path/to/the/application');

答案 1 :(得分:0)

不,require不起作用 - require用于引入其他perl文件一次。当然,如果您要调用的文件是一个perl程序......那么,最好将您希望在两个程序之间共享的部分分解出去,而不是require,或者如果你不想这样做就把它简单地当作黑盒子来对待。

要调用既不在搜索路径中的可执行文件 - 只是位于同一目录中是不够的! - 提供完整路径,例如systemexec和& 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 -fsystemperldoc -fexec