use Data::Dumper; sub mydump($) { print Data::Dumper->Dump( [ $_[0] ], ['*hash'] ); } sub myjoin { return unless exists($_[1]->{$_[2]}); return join $_[0], $_[1]->{$_[2]}; } my %hash; my $s1 = join( ':', @hash{qw(key)} ); mydump( \%hash ); my $s2 = myjoin( ':', \%hash, 'key' ); mydump( \%hash );