読者です 読者をやめる 読者になる 読者になる

正規表現のx修飾子を使い、かつ、"ム"を指定するとTest::MinimumVersionでrequires 5.017009になる

perl

2014-01-03 追記

これ、PPIx::Regexpのせいだった。
「ム」を16進数表示すると\x{E3}\x{83}\x{A0}になり、この最後のA0がWhitespeceと見なされてx修飾子と一緒になると

'perl_version_introduced' => '5.017009'

となる。
https://rt.cpan.org/Ticket/Display.html?id=91798

(でも、そもそもx修飾子使ってた所でsyntax変わらないからversionは元のままでいいんじゃないかな?)
x修飾子の動きが変わったのは5.17.9だからperl_version_introducedとしては合ってるのか。

元記事

5.8で動くようなコードでminil distを実行したらなぜかrequires 5.017009のエラーが出て「えー!何でー!」となりハマりました。


試しに5.17.9のperldeltaを見てみたんですが、そこに関わるようなコードを書いてなさそうで良くわからなくて断念。


とりあえずどんどんコード削除していった結果、最小の再現コードが作れました。

「ム」と「x修飾子」を使うと起こる。

で、もう一度5.17.9のperldelta見た感じ、ここの部分に当たるんじゃないかなと推測。
ただ「/xの空白の話だし、ムはU+30E0だからここかどうかは確実じゃないなぁ」とも思いまして。


ここでふとCompiler::Lexer をつかって Perl::MinimumVersion::Fast をかいてみた - blog.64p.orgを思い出して、Test::MinimumVersion::Fastを使って試してみたらエラーになりませんでした。


ここまでわかった所でその後どうしていいかわからないのでとりあえずメモ。


正規表現のx修飾子を使い、かつ、"ム"を指定するとTest::MinimumVersionでrequ ...