小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

フォルダ内ファイル一括修正プログラムの雛型

たとえば、フォルダ内に沢山のhtmファイルがあったとします。
全htmファイルのh4要素(h4タグ)をh3要素(h3タグ)に一括変更するには、以下の感じです。

$/ = undef; # ファイル全体を読み込むためにレコード区切り文字デリミタを未定義にする
while ($fileName = glob("VBMemo*.htm")) {
    open(FH, "<$fileName") or die "open error1 ($!)";
    $fileBody = <FH>; # ファイル全体を読み込む
    close(FH);

    $fileBody =~ s/<h4/<h3/g;
    $fileBody =~ s/<\/h4/<\/h3/g;

    open(FH, ">$fileName") or die "open error2 ($!)";
    print FH $fileBody; # ファイル全体を書き込む
    close(FH);
}

上記プログラムにおいて、フォルダ内ファイル一括変更で、以下の2点を調整すれば、いろいろ応用が利くはずです。

  • glob("VBMemo*.htm")のところをワイルドカードでファイル名を指定します。
  • s///のところの置換や変換をケースバイケースで変更します。

留意点

ファイルそのものを置き換えますので、万が一を考えて、ファルダを一時的にどこかへコピーしてから、上記プログラムを実行してください。万が一のときは、そこからロールバックしてください。