in reply to Having to remove \r from $ARGV[-1]
I just wrote the following script for cygwin perl:
use strict; use warnings; use Data::Dumper; print Dumper(\@ARGV);
... and called it with perl a.pl arg1 arg2. I couldn't see a \r at the end of the line. So my guess is: In your shell script where you call the perl script is a extra \r at the end of the line. Look at your editor settings there.