Perlプログラムの中でファイルの一部を書き換える方法
小粋空間 » Programming Language » Perl » Perlプログラムの中でファイルの一部を書き換える方法
Perlプログラムの中でファイルの一部を書き換える方法を紹介します。
1.はじめに
Perlでファイルの一部を書き換えるには、コマンドラインからのワンライナーで実行すれば一発です。
perl -pe 's/foo/bar/g' *.txt
参考:Perlのワンライナーで複数ファイルの文字列を一括置換する方法
が、Perlプログラムの中でワンライナーと同じようにファイルの一部を簡単に書き換える方法が分かりません。
ちなみにsystem関数やバッククォートでワンライナーを実行すると、
Can't do inplace edit without backup.
というエラーが表示されます。
2.プログラムの中でファイルの一部を書き換える
プログラムの中でファイルの一部を書き換えるには、次のような方法があります。
open my $fh1, $file;
my $content = do { local $/; <$fh1> };
close $fh1;
$content =~ s/foo/bar/g;
open my $fh2, "> $file";
print $fh2 $content;
close $fh2;
単純にファイルの内容を変数$contentに保持し、一括置換したあと同じファイルに上書きするというものです。
これはひとつのアイデアなので、よりシンプルに書ける方法があるかもしれません。