Perlのファイル内の文字列置換をワンライナではなくスクリプトでやる1つの方法

| コメント(2) | トラックバック(0)
よくワンライナで、

% perl -pi -e 's/foo/bar/' file

とかやって、fileの中身の foo を bar に置換するけど、それをスクリプトでやりたいときはどうするんだと同僚に聞かれて実験してみた。当たり前だけど、下記のようにしたら出来た。これって正しいのだろうか。

#!/usr/local/bin/perl -pi

use strict;
s/foo/bar/;
追記:
Perlクックブックに載っていた模様。
場所は7章の「レシピ7.9 ファイルを-iスイッチを使って、その場で更新する」。

やり方は↑のやつでいいみたい。shebangにオプションでよいようです。
ちなみにあなたが漢であるならば必要ないが、「-i」オプションを「-i.orig」とするとバックアップのファイル(filename.orig)を勝手に作ってくれるので吉。


Perlクックブック〈VOLUME1〉
トム クリスチャンセン ネイザン トーキントン Tom Christiansen Nathan Torkington Shibuya Perl Mongers ドキュメントシステム
オライリージャパン
売り上げランキング: 142559
おすすめ度の平均: 5.0
5 Perlプログラマ必携本(ご存知でしょうけど)


Perlクックブック〈VOLUME2〉
トム クリスチャンセン ネイザン トーキントン Tom Christiansen Nathan Torkington Shibuya Perl Mongers ドキュメントシステム
オライリージャパン
売り上げランキング: 85814
おすすめ度の平均: 3.0
3 あまり使わない部分が集まってしまった下巻

トラックバック(0)

トラックバックURL: http://blog.clouder.jp/mt/mt-tb.cgi/678

コメント(2)

$^I 変数を使う方が正統な気がします。

なるほど。$INPLACE_EDIT ですね。
スクリプト内だとそちらの方法の方がよいかもしれませんね

ありがとうございます!

コメントする

検索

広告

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12