in reply to Dynamic hash keys

You cannot change the value of hash keys. You can, however, do a delete and an insert:
$this->{data}{them} = delete $this->{data}{$that->{name}}; $that->{name} = "them";
It may of course be better to take a course of action where you don't duplicate data.