I was reading through perlsub and perlref again on metacpan and it occurred to me creating a closure using function templates is a lot like using an anonymous subroutine, only the syntax is a little different (using local *name = sub {}; name('arg'); versus my $name = sub {}; $name->('arg');).
Is this true or am I miss understanding something? What about compile time vs runtime?
Thanks,
-Shaun
use warnings; use v5.14; my $y = 2014; sub outer1 { my $x = $_[0] + 35; local *inner = sub { my $a = shift; local *__ANON__ = ( caller( 1 ) )[3] . "->inner"; say( ( caller( 0 ) )[3] ); return $y - $x * 19 + $a; }; return $x + inner( $_[0] / 2 ); } sub outer2 { my $x = $_[0] + 35; my $inner = sub { my $a = shift; local *__ANON__ = ( caller( 1 ) )[3] . "->inner"; say( ( caller( 0 ) )[3] ); return $y - $x * 19 + $a; }; return $x + $inner->( $_[0] / 2 ); } say outer1( 8 ); say outer2( 8 ); __END__ $ perl subtest.pl main::outer1->inner 1244 main::outer2->inner 1244
In reply to closures: anonymous subs vs function templates? by 5haun
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |