cpan

Encode 2.30 2.31 を Release したのでお知らせします。

変更はそれほどありません。

$Revision: 2.31 $ $Date: 2009/02/16 06:18:09 $
! lib/Encode/MIME/Header.pm
  "Revert [29767] and [29771] since it breaks perl 5.8" by miyagawa
  http://coderepos.org/share/changeset/30111

2.30 2009/02/15 17:44:13
! encoding.pm
  fixed regexes, et cetera. by drry
  http://coderepos.org/share/changeset/29767
! lib/Encode/MIME/Header.pm
  Addressed: Encode::MIME::Header::decode should respect CHECK
  http://rt.cpan.org/Ticket/Display.html?id=43204
  http://coderepos.org/share/changeset/29767

drryさん、ありがとうございました。が、一つだけお願い。//は使わないで下さい。Perl 5.8ではサポートしていないので。||と置き換えました。この場合はそれでOKなので。

....ごめん。//の出所はこっちの方でした。

mergeするときにこんがらがっちゃいました。

Dan the Encode Maintainer

追記[同日16:00]:

MIYAGAWA reports
This change made Encode/MIME/Header.pm not compile on 5.8. Reverted.
http://coderepos.org/share/changeset/30111

Ship 2.31 with the trunk :(

ぎゃああ、なんてこったい。というわけで2.31をreleaseしたのですが、問題となったのはたった一つの+でした。

--- lib/Encode/MIME/Header.pm	2009/02/15 17:44:13	2.8
+++ lib/Encode/MIME/Header.pm	2009/02/16 06:18:13
@@ -100,7 +100,7 @@
 my $re_encoded_word = qr{
     =\?                # begin encoded word
     (?:[-0-9A-Za-z_]+) # charset (encoding)
-    (?:\*[A-Za-z]{1,8}+(?:-[A-Za-z]{1,8})*)? # language (RFC 2231)
+    (?:\*[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*)? # language (RFC 2231)
     \?(?:[QqBb])\?     # delimiter
     (?:.*?)            # Base64-encodede contents
     \?=                # end encoded word

ちょっと調べてみると....

% perl5.10.0  -le 'print "perl" =~ /^\w{1,8}+$/'
1
% perl5.8.8   -le 'print "perl" =~ /^\w{1,8}+$/'
Nested quantifiers in regex; marked by <-- HERE in m/^\w{1,8}+ <-- HERE $/ at -e line 1.

というわけで、Perl 5.10.0 の bug を偶然にも踏んでいたようです。bleedperlとmaintperlでもチェックしてみようとしたら、現在の revision がどっちもコンパイルしない....