捕获Perl数组

时间:2015-09-16 17:28:25

标签: perl command

我认为这一定很简单,但我还没有找到可行的解决方案。

问题很简单:我想执行一个系统命令并捕获Perl变量中的输出。该命令在Perl数组中指定(包含命令和参数,例如@cmd = ('mycmd', '-opt1', 'arg1', 'val1'))。

我不想使用分叉,即open(FROM_KID, '-|')不是一种选择。我知道如果我在一个字符串中有命令,我可以用反引号来实现。所以也许这个问题减少了将@cmd数组转换为字符串。在我的例子中,命令参数可以包含空格。

是否有一种简单的方法可以将@cmd数组转换为可以与反引号一起使用的字符串,但是所有参数都被正确引用?理想情况下,不使用任何外部库。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可能正在寻找String::ShellQuote。请注意,仅支持Bourne shell引用。

但是反引号也会执行一个隐式分支,如果它们以任何方式与隐式管道分叉不同,我就不会注意到。 : - \