3

我想从 Perl 脚本调用 shell 命令。该命令的参数存在于 Perl 数组中。

最简单的方法是什么?

感谢您的回复

4

2 回答 2

4

您可能需要调用system,并且将参数作为列表传递是最有效的,这样可以避免使用 shell 来解析命令行。像这样的电话

my $status = system 'command', @arguments;

应该做你需要的。

于 2012-04-30T18:42:33.333 回答
1

大多数功能通常接受两种形式来启动程序:

  • 接受路径和参数列表
  • 接受 shell 命令。

第一个更安全,并且需要更少的资源。

system($prog, @args);             # @args > 0
system({ $prog } $prog, @args);   # @args >= 0

但是如果你必须使用 shell 或者你必须提供一个 shell 命令,那么String::ShellQuote(如果你在 unix 系统上)或Win32::ShellQuote(如果你在 Win32 系统上)可以帮助你。

use String::ShellQuote qw( shell_quote );
my $shell_cmd = shell_quote($prog, @args);
system($shell_cmd);
于 2012-04-30T18:48:58.917 回答