0

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

4

2 回答 2

3

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

否则,只需像这样添加路径:

system('/path/to/the/application');
于 2013-05-28T20:03:35.417 回答
0

不,require不工作——require用于拉入其他 perl 文件,一次。当然,如果您要调用的文件一个 perl 程序……那么,最好将您希望在两个程序之间共享的部分分解出来,而不是requireing 它,或者如果您不想这样做,只需将其视为黑匣子。

调用一个不在搜索路径中的可执行文件——仅仅在同一个目录中是不够的!-- 提供完整路径,例如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;

当然,最好检查每个系统调用的结果以防出错。

请注意在每种情况下都使用间接对象(即使用不带逗号的参数传递,例如用于打印的 fh 等)system!除非您非常清楚自己在做什么以及为什么这样做,否则很难推荐使用单参数形式的风险system,因为它会使您的输入受制于 shell 预处理的奇思妙想。

咨询perldoc -fsystemperldoc -fexec了解更多详情。

于 2013-05-28T20:53:23.053 回答