in reply to Question regarding exact regexp matching
$players{$1} = %skeleton_player;
You try to assign a hash to a scalar. A hash in scalar context will return a string that tells you something about the fill ratio of your hash. Try it out:
perl -e ' %h=(1,5,2,8); $d=%h; print $d;' #prints "2/8"
You want this instead:
%{$players{$1}} = %skeleton_player;
As you can see, now you are assigning a hash to a hash.
PS: It helps with debugging to print out values of variables even when you think you know what is in there. Very helpful for this is Data::Dumper. Try the following before and after your logging loop and see what your data looks like (you also have to add "use Data::Dumper" at the start of your script):
print Dumper(\%players),"\n";
Also very helpful to print out whatever gets matched in your logging loop, i.e. put this inside the match-success if-case:
print "I matched $1 and $2\n";
In Section
Seekers of Perl Wisdom