0

私はPerlを初めて使用し、次のロジックがPerlで機能するかどうかを知りたいです:-

いくつかの引数を指定して Perl スクリプトを使用してコマンドを実行する必要があり、その引数リストを準備する必要があります。いくつかの引数もオプションです (存在する場合と存在しない場合があります)。

push(@args, $arguments[0]);
push(@args, @controller);
push(@args, @member);

上記の引数のうち、必須の引数[0]があり、コントローラーとメンバーはオプションです。私の疑問は、「コントローラー」引数が存在しない場合、そこに「null」を配置する必要があるか、デフォルトでPerlが処理するかということです。

編集:-質問を明確にするために、「コントローラー」引数はありませんが、「メンバー」引数があります。

ありがとう -Arpit

4

2 に答える 2

0

なぜ@controller@member配列なのですか?

複数のコントローラーを渡していただけますか (存在する場合)。または、両方の引数pushが配列でなければならないと思いましたか?

2 番目の引数は、スカラー値にすることができます。プッシュする前にテストします。

push(@args, $arguments[0]);
push(@args, $controller) if defined $controller;
push(@args, $member)     if defined $member;

これにより、空白/null 文字列がプッシュされますが、引数が未定義の場合はプッシュされません。これらの値に空白、null、またはゼロの値がある場合にこれらが必要ない場合は、次のようにすることができます。

push(@args, $arguments[0]);
push(@args, $controller) if $controller;
push(@args, $member)     if defined $member;

joinそして、引数を 1 つの文字列に再結合するために使用できます。

my $full_command = join " ", $command, @args;

my $errors = system qw($full_command);

または、実行にシェルが必要ない場合:

my $errors = system $command, @args;

これにより、シェルなしでコマンドが実行されます。

于 2013-06-05T13:55:18.280 に答える