my %d = ("foo", "bar"); sub fi { ${$_[0]}[0] = "quux"; } sub capture { \@_ } fi(capture(values %d)); print join(" ", %d), $/; # OUTPUT: foo quux