in reply to Explanation of 'use strict;'

perldoc strict has all the gory details, but the short answer is that one of the things "use strict;" does it prevent you from using variable names you didn't declare. The benefit is that if you assign to "$name" and then later read from "$naem", perl will catch the typo. The downside is that you need to declare the variables you use. In your case, the simplest thing to do is replace the line "$name = <STDIN>;" with the line "my $name = <STDIN>;" and you're good.