in reply to Anonymous Subroutines

Basically an anonymous sub is just a sub that doesn't have a name in the package, so you just hold a reference to it, like when you make \&foo to make a reference to a sub foo {}.

But the most usefult thing of anonymous sub is closure:

sub foo { my ( $arg ) = @_ ; my $bar = sub { print "ARG[$arg]\n" ; return "RE[$arg]" ; } ; return $bar ; } my $bar1 = foo(123) ; my $bar2 = foo(456) ; my $foo1 = &$bar1() ; my $foo2 = &$bar2() ; print "foo1: $foo1\n" ; print "foo2: $foo2\n" ;
Output:
ARG[123] ARG[456] foo1: RE[123] foo2: RE[456]
Also is useful to create functions with eval:
my $e = 10 ; my $sub = eval(" sub { return 2**$e } ") ;
You also can redefine a normal sub with the declaration of a anonymous sub:
sub foo { print "foo\n" ;} # now redefining it: *foo = sub { print "bar\n" ;}
See perlref and perlsub

Graciliano M. P.
"Creativity is the expression of the liberty".