将Perl数组扩展为shell命令参数

时间:2012-04-30 18:34:57

标签: perl

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

最简单的方法是什么?

感谢您的回复

2 个答案:

答案 0 :(得分:4)

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

这样的电话
my $status = system 'command', @arguments;

应该做你需要的。

答案 1 :(得分: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);