in reply to Hierarchical Data Structures

The relationships between players is clearly a tree structure, but you didn't say why Tree:MultiNode isn't good for you...

So I will suggest a hash based approach. Each player has a boss (except for the top player), three subordinates, and points. A suitable hierarchical data structure is like the following

my %player; $player{1}{boss} = 0; # top player has no boss $player{2}{boss} = 1; # etc. $player{1}{slave}[0] = 2; $player{1}{slave}[1] = 3; $player{1}{slave}[2] = 4; $player{1}{points} = 42;
Obviously, you will want to use loops to populate %players, the assignments above were just to be clear on the structure.

Given this structure, you can determine points by iterating through all the players and collecting points from his slaves. To exchange positions, you smply swap bosses and slaves for the two positions.

-Mark