torus solutions! さんの「なんでも継続、Perl で。」のコード例は Scheme なら確かに継続になっているのですが、Perl 5.8 までは末尾関数呼び出しを goto にしてくれないので、クロージャをスタックに積み上げる再帰呼び出しのまんまです。 (11月18日追記)この問題を小飼弾さんが「継続は力なり」で解決しようと試みていますが、この解は残念ながら leaf_count_cps_g の呼び出しがループ(もしくは goto)になっていません。そもそも scheme で 再帰版 leaf_count を継続を使って書き改める動機は「継続と関数のすべてを末尾呼び出しに書き換えることでループ化する」ことですから、Perl でもそうしてみたいのです。 それならばと goto &subroutine名 を使えないかとやってみたのですけど、思ったように動いてくれませんでした。