Perl::Critic::Policy::ControlStructures::ProhibitReturnInMappingBlock - Do not "return" in mapping blocks (map, grep, sort) - metacpan.org を公開した。 map/grep/sort のブロック内でミスって return を書いてしまうと、外側の sub を抜けてしまって困るので、そういうの書いてたら怒ってくれるやつ。
やったことは単純で、先人
id:utgwkk 作の、 do 内で return してるのを怒ってくれる Perl::Critic::Policy::ControlStructures::ProhibitReturnInDoBlock - Do not "return" in "do" block - metacpan.org を fork し、 do のところを map/grep/sort で動くようにしただけ。 utgw さんの当時の記事はこれ perlcriticのポリシー書いた - 私が歌川です 。サードパーティ Perl::Critic::Policy つくるの、お手軽でかなりいいなと思った *1。
ブロックを取るものが網羅できているか Claude Code に聞くと、 map/grep/sort は対象としつつ、 if/for/while などは対象外とすべきだろうと言われて面白かった。 if などは普段意識してなかったけどたしかにブロックで、かつ return は (外側の sub を抜けるために) 意図的に使う。それらの違いは「写像と走査」であろうという鋭い指摘を
id:onk からもらったので、モジュールの命名も MappingBlock としている。
*1:持ってなかったのでこれを機に PAUSE のアカウントもつくった