« VEに関する連載記事 | トップページ | 痛鯖!! (°ロ°)! »

2009.04.08

perlで外部コマンドコール

お客さんに納品するものではなく、自分たちが使用するユーティリティの類だと標準にあまり縛られないで好きなものを使ってもまあ、怒られない(^^;(前提としては基本的に使い捨て、というところである)
そんなわけでUNIX系でファイルと文字列処理をする必要がある場合はだいたいperlを使って書くことにしている。
ただ、最近使っていなかったのでけっこうコマンドを忘れているなあということで再度まとめ直して見た。

perlにおける外部コマンドの利用方法は3つ。

1. exec()
2. system()
3. バッククォート (`)
4. open()
exec()の特徴はこいつを実行するとスクリプトが終わる、ということで処理の中で利用できないということだったので使ってない。

今回の処理では外部コマンドを実行してそのコマンドが出力する内容を加工して再利用するところにあったので、単純に$result = system(command); というわけにはいかず、openを使用してみた。

一番最初はコマンドの実行結果を一度ファイルに出力し、それをopenして処理することにしていたのだが、openはファイル以外にも使用できることがわかったので一気に処理がきれいになった。lsで実際に動くサンプルを書いてみる。

open(HDL , 'ls -l |');
while($line = <HDL>){
 @line = split(/ {1,20}/, $line);
  $count = @line;

  for($i=0; $i < $count ; $i++){
    print @line[$i]."\n";
  }
}
close(HDL);
……書いてるうちに楽しくなってきた(笑)

|

« VEに関する連載記事 | トップページ | 痛鯖!! (°ロ°)! »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2022/44589988

この記事へのトラックバック一覧です: perlで外部コマンドコール:

« VEに関する連載記事 | トップページ | 痛鯖!! (°ロ°)! »