と は知ってsystem()
いqx()
ますが、15 個までの bash コマンドを実行する必要があります。例えば
mkdir
, chown
, edquota -p user1 -u user2
, cp -r
, su - username
, git
, rm
_ln -s
質問
Perl で多くの Bash コマンドを実行する効率的な方法はありますか?
この場合、出力については気にしません。
まず、可能な限り多くの bash コマンドに同等の Perl 関数を使用します。これは、投稿に含まれているもののほとんどです。次に、それらの残りの部分については、system() または qx() またはバックティックまたは IPC:: モジュール (IPC::Run または IPC::Open3 など) のいずれかを使用します。
多くのコマンドで bash 構文を使用します。;
またはまたはで区切り&&
ます ( man bash
)。
$ perl -E 'system qq{date; date}'
Linux では、システム コマンド (およびコード ブロック) を非同期で実行するための POE フレームワークのPOE::Wheel::Runモジュールが気に入っています。あなたは出力を気にしないと言っていますが、将来必要になった場合、POE::Wheel::Run にはプロセスと対話できるエレガントなインターフェイスがあります。
my $s = <<END;
echo "1"
echo "2"
echo "3"
END
system("$s");