- [Perl]Module::Buildを使ってると勝手にshebangが書き換わる
- [その他]直ったかも?!→Re: Googleカレンダーの「毎日の予定リスト」通知メールが止まらない
- [その他]20歳になりました!
- [Shell]lessでタブ文字を表示する
- [Emacs]ミニバッファの邪魔な履歴を削除する
- [Emacs]Emacsのiswitchbで、普段は*...*を完全無視して必要なときだけ出す設定
- [Emacs][Thunderbird]コマンドラインからMessage-IDを指定してメールを開く方法。それをOrgMode(Emacs)からも開けるようにする。
- [ソフトウェア][Perl]tiarraのSystem::SendMessage(ControlPort経由)のログをLog::Channel経由で記録する
- [ソフトウェア][Perl]tiarraのSystem::SendMessage(ControlPort経由)でnick宛に送信するパッチ
- [開発]GNU makeのMakefileに、シェルスクリプトを自然に書くたった一つの方法
2009年04月29日
■[Perl]Perlから外部コマンドを実行する
最近Perlから外部コマンドを実行する場合は、openやsystemなどを使わずにIPC::Cmdを良く使っている。
特に深い理由はないんだけど、
- IPC::Cmdは5.009005からコアモジュールに入っている
- それなりに綺麗に書ける
- $IPC::Cmd::VERBOSEを真にしておけば、実行するコマンドの内容を出力してくれる
- 戻り値も「標準出力,標準エラー出力,その両方」が、改行区切りで配列になって戻ってくるのも地味に便利
(『かえりち』だと『返り血』に変換されるので、昔から『もどりち』って言うようにしてる>id:amachang)
とかかなあ。多分1番目の理由が大きい。コアモジュールに凝ってるのかもしれない。
ログ吐きにはLog::Message::Simple使うようになったし。
まあLog::Message::Simpleは、daemontools付属のmultilogと相性が良いという理由もあるんだけど。
ちなみにコマンドの出力をインタラクティブに処理したいときは、昔はIPC::Runを使っていたけど最近はIPC::Open3を使ってる。理由はIPC::Runがコアモジュールじゃないからってだけなんだけどさ。
あとFile::*系を良く使うようになったなあ。今までシェルスクリプトで書いてたようなものをPerlで書くようになったからだと思う。ウェブアプリ以外はほとんどシェルスクリプトでパッと書いちゃうタイプなんだけど、やっぱたまに面倒くせぇって思うときがあるんだよね。そんなときPerlで書けるのは良い。
おまけだけど、File::Fetchでリモートファイルを取得できるのを最近知ったんだけど、LWPとかwgetとかcurlとかを自動的に選んでくれるから環境によっては地味に便利だよね。まあでもURI::Fetchと違ってキャッシュできんし、結局IO::All使うからあんまり出番無いんだけどさ。
というわけで誰にも聞かれてないけど、最近のマイPerlモジュール事情を軽く話してみました。
- 84 http://www.google.co.jp/search?hl=ja&q=perl+コマンド &lr=&aq=f&oq=
- 83 http://www.google.co.jp/search?q=perl+コマンド&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
- 82 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=H98&q=yahoo++開発 blog&as_qdr=all&btnG=検索
- 82 http://www.google.co.jp/search?q=perl+外部コマンド&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 74 http://reader.livedoor.com/reader/
- 71 http://www.google.co.jp/search?hl=ja&q=perl+外部コマンド&lr=&aq=f&oq=
- 66 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP315JP315&q=cpan+アンインストール
- 63 http://search.yahoo.co.jp/search?p=perl+外部コマンド $_&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 62 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/holidays-l/20090429/p1
- 52 http://www42.tok2.com/home/perltechnic/data/281869.html
