in reply to hash sort problems

The:
$my_server_hash {$a} cmp $my_server_hash {$b} && $my_server_hash{$a}{tag} <=> $my_server_hash{$b}{tag}
piece most likely doesn't do what you you think it should.

$my_server_hash{$a} evaluates to a hashref, doesn't it? So cmp compares two stringified hashrefs, and that doesn't make much sense.