« NONDRINKING | メイン | 本日の体操 »

2006年03月03日

[技術] Perl Tips 書き戻し編集(inplace-edit)

【技術メモ】

プログラミングPerl Vol2 p788より

特殊変数 $INPLACE_EDIT ($^I)

#!/usr/bin/perl

use warnings;
use strict;

local $^I = '.org';
local @ARGV = glob("*.c");
while (<>) {
  s/foo/bar/g;
  print;
}

$^Iに文字列をセットしておくと、@ARGVに格納されたファイルの
中身を書き換えた上で、指定した文字列を末尾につけたファイル
に元の内容をバックアップしてくれる。

上記のサンプルだと、カレントディレクトリ上で、".c"がつくファイルを
オープンして、fooという文字列があれば、barに置換した上で、置換
前の内容を元のファイル名に".org"をつけたファイルに残してくれる。

こんな便利な指定があるなんて、しらなかったなぁ~

ちなみに上記のサンプルプログラムと同じことは、下記のように1行で
実行できるみたい。

% perl -i.org -pe 's/foo/bar/g' *.c

こっちのやり方も、要調査。

投稿者 nekobara : 2006年03月03日 06:20


トラックバック

このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/992

コメント