in reply to numeric hash keys

Have you looked at the code in line 25? Have you looked at the value of $PM?

The int function expects a number and warns you if it gets something that does not look like a number.

For your further understanding, hash keys can only be "strings", but Perl converts automatically between strings and numbers depending on the operators you use on the scalars containing the values.