【发布时间】:2012-04-30 18:34:57
【问题描述】:
我想从 Perl 脚本调用 shell 命令。命令的参数存在于 Perl 数组中。
最简单的方法是什么?
感谢回复
【问题讨论】:
标签: perl
我想从 Perl 脚本调用 shell 命令。命令的参数存在于 Perl 数组中。
最简单的方法是什么?
感谢回复
【问题讨论】:
标签: perl
您可能需要调用system,并且将参数作为列表传递是最有效的,这样可以避免使用shell来解析命令行。像这样的电话
my $status = system 'command', @arguments;
应该做你需要的。
【讨论】:
大多数函数通常接受两种形式来启动程序:
第一个更安全,需要的资源更少。
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);
【讨论】:
system 和shell_quote,任何产生列表(包括列表文字)的表达式都是可接受的。