1

これが私が望むことをするちょっとしたPerlコードです:

 my $value  = get_value();
 my $result = qx(some-shell-command $value);

 sub get_value {
   ...
   return ...
 }

を使用せずに同じ効果を達成することは可能$valueですか? 何かのようなもの

my $result = qx (some-shell-command . ' '. get_value());

2 番目のアプローチがうまくいかない理由はわかっています。それは単にアイデアを示すためです。

4

2 に答える 2

6
my $result = qx(some-shell-command  @{[ get_value() ]});

# or dereferencing single scalar value 
# (last one from get_value if it returns more than one)
my $result = qx(some-shell-command  ${ \get_value() });

しかし、私はあなたの最初のオプションを使用したいと思います。

説明: perl 配列は、 などの内部""を補間します。qx()

[]上記は、関数の結果を保持する配列参照であり、 によって逆参照され@{}、 内で補間されqx()ます。

于 2014-06-18T12:32:24.807 に答える
2

バッククォート とqxは組み込み関数と同等であるreadpipeため、明示的に使用できます。

$result = readpipe("some-shell-command " . get_value());
于 2014-06-18T14:31:59.817 に答える