use utf8で嵌まる

$args->{content}=~m/<!--エントリー-->(.*)<!--エントリー/;

という感じの正規表現をマッチさせることができなくてかなり頓挫。
perlは普段使っていないので、嵌まると抜け出すまでが長い・・・
答えは

use utf8;

だった。
よくわからないがperl5.8から強化されたらしいunicode対応関連っぽい。うぅむ。
とりあえず動いたのでよしとする。

せっかくなので作ったEFT

various_blog.pl

use utf8;

# フォーマットの決まっていないblogたち

sub handle {
  my ($self, $args) = @_;
  $args->{entry}->link =~ qr{^http://.*\.blog\d+\.fc2\.com/blog-entry-\d+.html}
  || $args->{entry}->link =~ qr{^http://blog.goo.ne.jp/[^/]+/e/};
}

sub extract {
  my ($self, $args) = @_;

  my @contents_patterns=(
    # fc2
    qr{class="content">(.*)</div><!--/content-->}s,
    qr{<!--エントリー-->(.*)<!--エントリー}s,
    qr{<td id="center_contents">(.*)</td>}s,
    qr{<!-- ▼ メイン&記事 ▼ -->(.*)<!--\s*<rdf:RDF}s,
    qr{<!--▼エントリ-->(.*)<!--\s*<rdf:RDF}s,
    qr{<td class="main_txt">(.*)<!--\s*<rdf:RDF}s,
    # goo
    qr{<!-- エントリー -->(.*)<!--\s*<rdf:RDF}s,
    qr{<!--MAIN-->(.*)<!--\s*<rdf:RDF}s,
    qr{<td class="etBody">(.*)<!--\s*<rdf:RDF}s,
  );

  foreach my $pattern (@contents_patterns){
    if($args->{content}=~$pattern){
      return $1;
    }
  }

  0;
}

気になっていたfc2, gooあたりのブログ用に書いてみた。