Role::Tiny->apply_roles_to_object が、apply しすぎると Identifier too long になる件

https://rt.cpan.org/Ticket/Display.html?id=83248&results=3e71c0cc83092a6078e1a738c55e72fa

Role::Tiny->apply_roles_to_object で apply しまくると、Foo__WITH__R::AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA__WITH__R::BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB__WITH__R::CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC__WITH__R::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD__WITH__R::EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

みたいにくそながい package名になり、これをつかって string eval をすると'Identifier too long' といわれてしまいます。

通常、そんなに問題はないのですが、Role::Tiny と併用されることが多い Moo では string eval を多用しており、ふとしたタイミングでこのエラーになることがありえるので、長すぎる package 名になるときは詰めるとかハッシュにするとか、なんかしてください! っていう要求です。

Moose ではそういう問題なかったとおもうので、というか Moose つかったプログラムを port しようとしてたらこの問題にあたったので、RT に登録したという次第。

Published: 2013-02-10(Sun) 03:17