如何使用qx
变量执行Perl的$opt
函数?
之前(工作):
my @df_output = qx (df -k /tmp);
我想使用-k
,-g
或-H
:
my @df_output = qx (df -$opt /tmp);
答案 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
,它有效。