Regexp::Assembleのバグ?
追記:
バグだなんだ言ってねーで手動かせうんこ野郎。
ということで正規表現リテラル(?)じゃなく文字列で渡せばうまくいきました。
でも正規表現リテラルでもできなかったっけ?
コメント欄で紹介させてもらった弾さんの記事でも正規表現リテラル使ってるし。
自分でも前使った時うまく動いた気がするけど。
ただ今ネタ元のPerl HacksとPodのドキュメント見たらどっちも正規表現リテラルは使ってなかったので、やっぱ文字列を渡した方がいいらしい。
---
if, elsif, elsif, ... なコードをどう書き直せばわかりやすいか悩む修行 - 昨日知ったこと
の記事にコメントしたのでついでに同じことをRegexp::Assembleを使って書いてみたら正規表現エラーが出た。
次のコードって間違ってますか?
というか正規表現のエラーだからRegexp::Assembleが生成した正規表現が間違ってたとしか俺には思えないのですが。
エラーの内容は次の通り。
括弧の対応が足りないエラー。*1
Unmatched ) in regex; marked by <-- HERE in m/(?:(?msx-i:\A (\S+) \s* (?:(are) \s* (.+) \Z)(?{1})|(is) \s* (.+) \Z)(?{2}))|(?msx-i:\A (.*) \Z)(?{0})) <-- HERE / at /home/takuya/local/lib/perl5/Regexp/Assemble.pm line 996.
Podに
There is a mailing list for the discussion of "Regexp::Assemble". Subsc ription details are available at <http://listes.mongueurs.net/mailman/l istinfo/regexp-assemble>.
と書かれていたので明日あたり質問してみよう。
*1:こんなミス機械的に生成してできるかな?