如何用变量执行Perl qx函数

jda*_*mae 5 variables perl interpolation

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

之前(工作):

my @df_output = qx (df -k /tmp);
Run Code Online (Sandbox Code Playgroud)

我想请使用-k,-g-H:

my @df_output = qx (df -$opt /tmp);
Run Code Online (Sandbox Code Playgroud)

Eev*_*vee 8

你有什么应该工作,但是:永远不要使用qx.这是古老而危险的; 无论你喂它到底是什么,都很容易受到外壳注入的影响,或者如果/bin/sh不是你想象的那么会遇到惊喜.

使用多arg形式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: $!";
Run Code Online (Sandbox Code Playgroud)

  • `system`返回退出状态,而不是进程的stdout.但它也支持一种安全的多参数形式,是的. (4认同)
  • 没有人开始实施multi-arg open-| 在Windows中,虽然:( (2认同)