#!/usr/bin/perl -w use strict; my %hash = ('first_key' => 1 , 'second_key' => 2); my $magic_ref = Create_Magic(\$hash{'second_key'},'second_key'); print "My value is ", ${&$magic_ref} , "\n"; print "My key is ", &$magic_ref('key') , "\n"; sub Create_Magic { my ($value, $key) = @_; return sub { if ($_[0] && $_[0] eq 'key') { return $key; } $value; } }