0

次のように2つの引数を取り、引数に応じて適切な関数を呼び出すperlスクリプトがあります。このスクリプトを bash から呼び出していますが、perl から呼び出したいのですが、可能ですか?

/opt/sbin/script.pl --group="value1" --rule="value2";

また、スクリプトは、読みたい戻り値で終了します。

4

3 に答える 3

5

shコマンドに相当する Perl

/opt/sbin/script.pl --group="value1" --rule="value2"

system('/opt/sbin/script.pl', '--group=value1', '--rule=value2');

以下を使用してシェルでコマンドを起動することもできますが、私はそうするのを避けます:

system(q{/opt/sbin/script.pl --group="value1" --rule="value2"});

で行う必要があるのと同じようにsh、いくつかのエラー チェックをフォローアップする必要があります (どちらの方法を使用した場合でも)。を使用して行うことができますuse autodie qw( system );。より柔軟性が必要な場合は、「手動で」行う方法についてドキュメントを確認してください。

于 2013-09-13T16:52:41.840 に答える
3

出力をキャプチャする場合:

$foo = `/opt/sbin/script.pl --group="value1" --rule="value2"`;

終了ステータスを取得したいが、script.pl の出力を stdout に送信する場合:

$status = system "/opt/sbin/script.pl --group=value1 --rule=value2";

ファイルからのように出力を読みたい場合:

open SCRIPT, "/opt/sbin/script.pl --group=value1 --rule=value2 |" or die $!;
while (<SCRIPT>) ...
于 2013-09-13T16:51:47.117 に答える
1

はい。systemexec、またはを使用できます<backticks>

systemとの主な違いexecは、exec「コマンドを実行し、決して戻らないことです。

システム例:

system("perl", "foo.pl", "arg");
于 2013-09-13T16:53:04.737 に答える