sub main { my (%hash_rec) = (); $hash_rec{'id'} = "001"; &doSub1(\%hash_rec); # return result should consist of id=001 and id2=002 print "back main, id=$hash_rec{'id'}, id2=$hash_rec{'id2'}\n"; } sub doSub1 { my ($hash_ref) = @_; print "inside doSub1, id=$$hash_ref{'id'}\n"; $$hash_ref{'id2'} = "002"; # How do I call doSub2 and pass only specific hash id2 as reference? &doSub2($hash_ref{'id2'}); } sub doSub2 { my ($id2_ref) = @_; print "inside doSub2, id2=$$id2_ref\n"; }