in reply to Layman's terms how-to on HoH refs and the arrow operator

The arrow operator is optional everywhere except the first dereference.

ie. $array[0][1] is the same as $array[0]->[1].
In both cases, you have an array (@array) in which the first element ($array[0]) is a reference to another array.

$array[0] is not the same as $array->[0] however.
In the first case, you are accessing the first element of @array. In the second, you are accessing the first element of the array that is referenced by $array (note: $array is a scalar holding a reference to an array).

As for your question about:
$$player_dbref{player_name}{ip_addr} for the player's IP and $$player_dbref{player_name}{ip_addr}{id} to get the user id.

You can't do that, because $$player_dbref{player_name}{ip_addr} cannot hold both the value of the players IP, and a reference to another hash.
What you may want is:
$$player_dbref{player_name}{ip_addr} = "1.2.3.4"; $$player_dbref{player_name}{id} = 007;
In this case you have a reference ($player_dbref) to a hash of player names, the values of which, are another hash which holds IP, id, etc.