The code you posted itself has got a lot of typos to be corrected, it is better you copy paste it than writing it a line at a time, at the regex line, you got {4), which one did you mean () or {}, then in the while loop where you checked the keys and values of the hash you apparently did not put another ) before {}
There are many others, while I am not getting to answer your question, I am just showing you some things, and believe me, I can't stop myself from advising you to make a habit of typing:
use strict;
use warnings;
at the top of your programs and getting to name your variables accordingly, the $name, is used only once to read from <STDIN>.. did this script work, did it give error messages?
A visit to the documentation at readline and read and filehandles would help clarify some mysteries
Excellence is an Endeavor of Persistence.
Chance Favors a Prepared Mind.