« 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