[perl6] done が done-testing に変わる

変わるってことで、まあ Perl6 が正式リリースされる前だからいいんだが、Perl6 のコードを取り出すにはどうすりゃいいんだってことになって、soozy.slack で話題になっていた。

https://github.com/rakudo/rakudo/commit/268ca0802e6106de2880ddf28bfcfe9e2d3b1bc9

最近、Perl6 は、リリースにむけてdeprecatedなコードの整理などが行われており、ガンガン deprecated 扱いで温存されてたものが削除されていっている。 というわけで、今日を生きるためのワークアラウンドとして以下のパターンを僕がひねり出した。

perl6-m -e 'use Test; { EVAL "done-testing"; CATCH { default { done; } } }’

Perl5 なら

__PACKAGE__->can(‘done-testing’) or ev " “sub done-testing { done }"

とかで一発なのにな〜と #perl6 でぼやいていたら、FROGGS氏が以下のコードを提示してくれた。

use Test; &::('done-testing') ?? &::('done-testing')() !! &::('done')()

なるほど!これはすなわち Perl5 でいうところの

perl -E 'use Test::More; *::done_testing{CODE} ? *::done_testing{CODE}->() : *::done{CODE}->()’

と同じことであり、なるほど Perl らしくてわかりやすいコードなのであった。

最近、Perl6 に関する雑談を http://soozy.fushihara.net/ で行っており、#perl6 チャンネルで活発な議論が行われているんで、興味ある人はご参加ください。

Published: 2015-09-28(Mon) 17:28