http://www.perlmonks.org?node_id=11132259

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

I'm trying to automate building a dispatch table - or at least, to minimize keystrokes.

Please suggest ways to achieve the desired result:

use strict; use warnings; my %dispatch = ( normal => sub{"$_[0] Normal dispatch"}, map( {$_ => sub{"$_[0] Sub returns $_"} } qw| Uno Dos tres|), ); print $dispatch{"normal"}->(0),"\n"; # 0 Normal dispatch (as expected) + print $dispatch{"Uno"}->(1),"\n"; # WANT: "1 Sub returns Uno" print $dispatch{"Dos"}->(2),"\n"; # WANT: "2 Sub returns Dos"
This currently prints:
0 Normal dispatch Use of uninitialized value $_ in concatenation (.) or string at .\test +dispatch.pl line 5. 1 Sub returns Use of uninitialized value $_ in concatenation (.) or string at .\test +dispatch.pl line 5. 2 Sub returns
Also - is there a NAME for what I am attempting ? "Early evaluation of $_" ?

                "Avoid strange women and temporary variables."