[JavaScript] 猿でもわかるクロージャ超入門という記事が好評だったので、今回はPerl編です。 上記のJavaScript版の記事を読んだという前提で解説させていただきます。 問題 呼び出すたびに、1,2,3,...を返すような関数f( )を定義せよ。 f(); // 1 f(); // 2 f(); // 3 クロージャ その1 JS版のクロージャに似せて書くとこうなります。 #!/usr/bin/perl use strict; use warnings; sub outer { my $i = 1; return sub { print "$i\n"; $i++; }; } my $f = outer(); $f->(); # 1 $f->(); # 2 $f->(); # 3 JS版とそっくりですね~。 関数のリファレンスを使っているので、呼び出し方法が$f->()のよう
![[Perl]猿でもわかるクロージャ超入門 - DQNEO起業日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/8f7de7c0278993661a11fbc3637f96292ba773aa/height=288;version=1;width=512/http%3A%2F%2Fdqn.sakusakutto.jp%2Fimages%2Fkali.jpg)