トップページへ

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に保持し、一括置換したあと同じファイルに上書きするというものです。

これはひとつのアイデアなので、よりシンプルに書ける方法があるかもしれません。

« 前の記事へ

次の記事へ »

トップページへ