ARGV must be capitalized. Signal handlers deal with signal names, not numbers. Use kill -l to find their names on your system. The backtick operator does no translation of the return value, unlike csh . Perl does substitution only in certain constructs such as double quotes, backticks, angle brackets, and search patterns.
Shells interpret scripts a little bit at a time.
The environment is not automatically made available as separate scalar variables. See the perldata manpage for details. Avoid barewords if you can, especially all lower-case ones. You can't tell just by looking at it whether a bareword is a function or a string. By using quotes on strings and parens on function calls, you won't ever get them confused.