電子書籍の厳選無料作品が豊富!

Perlを用いて、数百あるhtmlファイルの一括検索&置換作業がしたいです。

作業としては、

1.webに上がっているhtmlファイルを取得してローカルに保存 (完了)

2.meta系テキストの記述
例:<meta property="og:title" content="" />

3.さきほど保存したファイルの中から、titleタグの中身を取得して変数に格納
例<title>今日の日記</title>の「今日の日記」部分

4.og:titleのcontent要素に格納したデータを記述する
例:<meta property="og:title" content="今日の日記" />

以上です。
現在1は出来ていて、2も一括置換で可能です。3.4のローカルに保存したhtmlファイルの操作で躓いています。
お分かりの方どうぞよろしくお願いします。

A 回答 (2件)

適当。

表示がくずれるので、空白2文字を全角にしていることに注意。

use strict;
use warnings;
use autodie;

for my $file (@ARGV) {
  my $new_file = $file . '.new';
  open my $fh,   '<', $file;
  open my $new_fh, '>', $new_file;
  while ( my $line = <$fh> ) {
    if ( $line =~ m{(\s*)<title>(.*)</title>(\s*)$}i ) {
      my $title = $2;
      print {$new_fh} $1,
        qq(<meta property="og:title" content="$title" />), $3;
    }
    print {$new_fh} $line;
  }
  close $fh;
  close $new_fh;
}


----
perl -w foo.pl foo1.html foo2.html
    • good
    • 0

「htmlファイル」から読み込んで正規表現でマッチさせれば 3 はできると思うんだけどなぁ.... もちろん 3 (と 2) がで

きれば 4 ができるのは当たり前.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!