Mikey... Thats not an anonymous code block, its a anonymous sub (closure). Theres a difference.# a perl koan designed for a true perl monk sub zen { my $coderef = shift; # the code ref is a &$coderef; # Find the inner meaning }; zen (sub { print "How can I put a variable that is only visable to zen from within this anon code block?"; }); # mdupont
sub Alpha { my $param=shift; { # this is an anonymous code block return; #this leaves the sub, not just the block } print "Do you see me?\n"; } sub Bravo { my $n=shift; ANONYMOUS:{ #print "$n\n"; last ANONYMOUS if !$n; $n-- && redo ANONYMOUS if $n>10; print "$n\n"; $n-- && redo ANONYMOUS if $n>5; } } Alpha; Bravo(20);
And the style &$coderef is inclined towards errors (and basically deprecated except when taking a reference to a sub), $coderef->() is much easier to understand.
Anyway heres my answer to your koan...
sub zen { my $art=shift; my $motorcycle=$art->('of'); print $$motorcycle.'='.(caller(0))[3]; } zen sub{return \'maintainance' if $_[0]=='of'};
In reply to Re: The zen of code blocks
by Anonymous Monk
in thread The zen of code blocks
by mdupont
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |