in reply to parameters and piped input

As Bob9000 pointed out you need a shift before you can use the diamond operator.

This is from  perldoc perlop http://perldoc.perl.org/perlop.html

The null filehandle <> is special: it can be used to emulate the behavior of sed and awk. Input from <> comes either from standard input, or from each file listed on the command line. Here's how it works: the first time <> is evaluated, the @ARGV array is checked, and if it is empty, $ARGV[0] is set to "-", which when opened gives you standard input. The @ARGV array is then processed as a list of filenames.

If you are thinking of lot of command line options in the future check out

Getopt::Std and Getopt::Long