Your question has mostly been answered, but I think a short abstract on all the available options is in order.
Commandline parameters are available to the script via the @ARGV array. You can also modify this array at runtime to suit your needs, if desired.
The Getopt:: modules are great help if you want to pass more parameters on the commandline than just filenames, @ARGV mangling can be very tiresome. These modules do the job for you with a lot of flexibly and robustness.
If you use the plain diamond operator <>, Perl will read data from STDIN if no command line parameters have been passed, or use the scalars in @ARGV as the names of the files to read. It will read all of the files given there without you having to explicitly open/close any of them. Note that you can manually munge @ARGV and Perl will willing pick up the modified list of filenames.
Unless you need to output to several files, I would suggest you print to STDOUT. To capture the output to a file, the shell offers redirection, so there is no extra work involved. But if you call that script from another one, its output will be much easier to work with if it prints to STDOUT instead of a file.
Hope this helps. (Although I'm sure it's not entirely complete. :))