$ cat t15.pl use strict; use warnings; my @usages = qw( Gilligan 23 Thurston 70 Lovey 98 ); my $ask; sub cookup2 { my %usd = @_; # Better be even #. sub ask_monkey_about { my $cst = shift; $usd{$cst}; }; } sub cookup { my %usd = @_; # Better be even #. return sub { my $cst = shift; $usd{$cst}; }; } $ask = cookup ( @usages ); print $ask->("Lovey") . "\n"; cookup2 ( @usages ); print ask_monkey_about("Lovey") . "\n";