File driver.pl: use strict; use TestMeNow; my %map = TestMeNow::initialize('value', 'Here I am!'); &{$map{'onecase'}{'ex'}}(); File TestMeNow.pm: use strict; package TestMeNow; my(%map, $value, %mapping); $map{'value'} = \$value; sub initialize { my(%args) = @_; foreach(keys %args) { ${$map{$_}} = $args{$_}; } my $string = ; %mapping = eval $string; return %mapping; } 1; __DATA__ 'onecase', { 'ex' => sub {print "$value\n";} }