http://www.perlmonks.org?node_id=979013


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";