Mojoliciousで作ったウェブアプリからバッチを叩きたいという案件があって外部コマンド実行について試行錯誤したのでまとめてみた。 Perlではsystem()、exec()、``なんかで外部コマンド実行できるが、それぞれで挙動が異なる。 そこまで時間のかからない戻り値も見ない処理なら特に何も考えずに``を使うところだが、処理に時間がかかりウェブアプリ側がそれを待つとタイムアウトしてしまうような要件だったので、特にバックグラウンド実行まわりについて調べてみた。 1. ``による実行 戻り値: 実行結果 実行結果がそのまま返ってくる。 $ perl -e '$r=`echo test`;print"ret:$r\n"' ret:test 単純にタイプ数が少ないこともあって雑にスクリプト書く時はこれを使う機会が多いのだが・・・ バックグラウンド実行 &つけても何かダメっぽい。戻り値の出力を