
大量のファイルの中にある特定の部分を全て置き換えたいと思った時、プログラミングの勉強をしていてよかったと思います。
確かに、DreamWeaverでも、検索/置換コマンドを使えばある程度のことはできます。
しかし、複雑な構造になっているとうまく特定の部分だけを抽出するのは難しい。
そこで、文字列処理が得意なPerlを利用します。File::Findモジュールのfind関数を使えば、あっという間に処理できてしまいます。
以下が、サンプルコードです。
#!/usr/bin/perl
use warnings;
use strict;
use File::Find;
find(\&replace, '.');
sub replace {
my $fname = $_;
return unless -f $_;
return unless /\.s?html?$/;
open IN, $_;
undef $/;
$_ = ;
close IN;
s|「置き換え前の文字列」|「置き換え後の文字列」|gis;
open TMP, ">$fname.tmp";
print TMP;
close TMP;
rename "$fname.tmp", $fname or warn "cannot rename $fname because $!\n";
}
たった、これだけで数万ページの変換も一瞬で終わります。
静的なhtmlファイルだけで大量に作ったアフィリエイトサイトなどで、一気にアフィリエイト広告を入れ替えたい時などに役立ちます。
トラックバックURL: http://www.sigmadesign.co.jp/ja/mt-tb.cgi/90
コメントする