3

この方法で引数を渡すときに、shell_qoutefrom String::ShellQuoteを使用するのは理にかなっていますか?system

#!/usr/bin/env perl
use warnings;
use 5.012;
use String::ShellQuote qw(shell_quote);

my $file = shift;
my $argument = shift;

$file = shell_quote $file;
$argument = shell_quote $argument;

system( 'some_command', '--verbose', '-o', $file, $argument );
4

1 に答える 1

4

いいえ、そうではありません。systemとして呼び出す場合

system LIST

その後、シェルは呼び出されません。シェルのメタ文字には特別な意味はありません。したがって、引数を引用してはなりません。そうしないと、間違った結果が得られます。

systemとして呼び出される場合は、引用する必要があります

system SCALAR

ここで、SCALAR は次のようなものls file name with spacesで、引数 tolsはスペースを含む単一のファイル名です。

于 2012-05-15T07:48:59.583 に答える