use strict; use Data::Dumper; my %x = map { $_ => [$_, sub {shift;}]} qw(a b c); print Dumper(\%x); #### $VAR1 = { 'a' => [ 'a', sub { "DUMMY" } ], 'b' => [ 'b', $VAR1->{'a'}[1] ], 'c' => [ 'c', $VAR1->{'a'}[1] ] };