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に保持し、一括置換したあと同じファイルに上書きするというものです。
これはひとつのアイデアなので、よりシンプルに書ける方法があるかもしれません。
Posted by yujiro このページの先頭に戻る
- Perlでansibleライブラリを作成する方法
- perlのCPANモジュールからRPMを作成する方法
- Perlで「Subroutine permission redefined at~」を抑止する方法
- XML::Simpleのインストールでエラーになる場合の対処
- YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処
- Perlの正規表現を使って文字列をまとめて取得する方法
- Perlのハッシュでキーの有無を調べる方法
- perlで配列の途中の要素を削除する方法
- YAML::Tinyでコロンを利用する方法
- Perlで改行コードがCRのファイルを読み込む方法
- Perlで「Possible precedence issue with control flow operator」という警告の対処
- PerlのLWPで「Can't verify SSL peers without knowing which Certificate Authorities to trust」というエラーになったときの対処
- Perl+Windowsでファイルを再帰的にリネームする方法
- Perlの「Bareword "%s" not allowed while "strict subs" in use~」というエラーについて
- Perlで文字列結合しながらs///演算子で置換する方法
トラックバックURL
コメントする
greeting