ちょっと散文的になりますが、いくつか気になった点を自分の主観でメモ。
基本的に production 環境ではつかわない方がいいとおもいます>Devel::Declare
Devel::Declare はまだまだ不安定なようですから。
とはいえ、個人的には Source Filter それ自体は、そこまで嫌悪するべきものではないとおもってます。syntax さえ交換可能な柔軟さをもった言語、それが Perl5 だとおもいますんで。
perl6 では sytnax filter をパーザレイヤも提供することで、より*正しい*実装として提供することになってるかとおもいます。
Perl6 の syntax level での柔軟さを Perl5 でさきどりするためのものが Devel::Declare だとおもいます。
とはいえ、Devel::Declare の実装が evil すぎるってのもまあたしかにそうだよね。ってかんじ。危険性がわからない人はまねすんな、とはおもう。
その昔、YAMLにSpiffyというソースフィルタ系のモジュールが入ったときには侃々諤々の大騒ぎになりましたが、その後Plaggerなどで採用されて国内では根強い人気を誇っているTest::BaseにはいまだにSpiffyが使われていますし、おそらくいま、それを問題にしている人はいないでしょう。
という主張についてはちょっとひっかかる点があります。この論法では、Test::Base はテストスクリプトなのでゆるされているという点がみおとされているかとおもいます。俺は、一般的にテストスクリプトでは多少 evil なコードをかいても、プロセスが短命であり、影響が局所的であるところからゆるさるとおもっています。なので、YAML でつかうのと Test::Base でつかうのではちょっと問題がちがうと俺はおもいます。
あと、Devel::Declare つかってて Perl 自体が SEGV したりすると、まじしんどいだろうな。とはおもうんですよ。はい。
ま、とはいえなんかある程度これをゴリゴリつかってるプロジェクトとか増えてくればバグもすくなくなってつかいものになる日がくるのかもね、とはおもうですよ。
だって、package Foo; より class Foo { } でかけるほうがうれしいじゃん。