如何用变量执行Perl qx函数

时间:2011-06-16 21:13:10

标签: perl variables interpolation

如何使用qx变量执行Perl的$opt函数?

之前(工作):

my @df_output = qx (df -k /tmp);

我想使用-k-g-H

my @df_output = qx (df -$opt /tmp);

2 个答案:

答案 0 :(得分:8)

你应该有什么工作,但是:不要使用qx。这是古老而危险的;无论你喂它到底是什么,所以如果/bin/sh不是你所期望的那样,它很容易受到外壳注入的影响或者遇到意外。

使用open()的多参数形式,完全绕过shell。

open my $fh, '-|', 'df', "-$opt", '/tmp' or die "Can't open pipe: $!";
my @lines = <$fh>;  # or read in a loop, which is more likely what you want
close $fh or die "Can't close pipe: $!";

答案 1 :(得分:3)

尝试使用反斜杠\$opt,它有效。