%hash = (
foo => 'bar',
bar => sub { 'foo' }
);
(ref() eq 'CODE') && $_ = \$hash{ $_->() } for values %hash;
####
%hash = (
foo => 'bar',
bar => [ 'foo' ]
);
(ref() eq 'ARRAY') && $_ = \$hash{ $_->[0] } for values %hash;
##
##
%hash = (
foo => 'bar',
bar => 'REF:foo'
);
/^REF:(.+)/ and $_ = \$hash{$1} for values %hash;
##
##
%hash = ();
for (
[ foo => 'bar' ],
[ bar => \$hash{foo} ]
) {
$hash{ $_->[0] } = $_->[1];
}
##
##
%hash = ();
%temp = (
foo => 'bar',
bar => \$hash{foo}
);
$hash{$_} = $temp{$_} for keys %temp;