In perl, a closure is implemented as an
anonymous subroutine. You can think of
it as something of a function generator.
sub greet {
my $salutation = shift();
return sub { print "$salutation " . shift (). "\n"; };
}
my $a = greet( "Hello" );
my $b = greet( "Bonjour" );
So now if you call &$a("World"), "Hello World" will
print. If you call &$b("La Monde"), "Bonjour La Monde" will
print. Closures are useful if you want to bind
a particular value of a lexical variable to a
function.