http://qs321.pair.com?node_id=271690

DigitalKitty has asked for the wisdom of the Perl Monks concerning the following question:

Hi all.

I must confess to being a little ashamed. Having worked with perl for a reasonable length of time, the concept of a closure should not prove to be so enigmatic. To alleviate my ignorance, I was hoping some of you could evaluate the code below and tell me what is happening at each stage of program execution. Granted, this is a very simple closure but in the event that someone asks me to explain how/why it works, I would probably provide an inadequate answer (at best).

#!/usr/bin/perl -w use strict; sub shoppingList { my $item = shift(); return sub { my $otherItem = shift(); print "I need to buy a $item and a $otherItem.\n"; }; } my $itemInBasket = shoppingList( "sweater" ); my $newItemInBasket = shoppingList( "lipstick" ); &$itemInBasket( "pair of shoes" ); &$newItemInBasket( "purse" );


Thanks in advance for any help you are able to provide.

-Katie.