次のように2つの引数を取り、引数に応じて適切な関数を呼び出すperlスクリプトがあります。このスクリプトを bash から呼び出していますが、perl から呼び出したいのですが、可能ですか?
/opt/sbin/script.pl --group="value1" --rule="value2";
また、スクリプトは、読みたい戻り値で終了します。
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 );
。より柔軟性が必要な場合は、「手動で」行う方法についてドキュメントを確認してください。
出力をキャプチャする場合:
$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>) ...
はい。system
、exec
、またはを使用できます<backticks>
。
system
との主な違いexec
は、exec
「コマンドを実行し、決して戻らないことです。
システム例:
system("perl", "foo.pl", "arg");