It looks to me like your command interpreter (shell) is interpreting the parameters before Perl even sees the argument string. Try this to see what is happening:
use strict;
for (my $j = 0; $j <= $#ARGV; $j++) {
print "ARGV[$j] = $ARGV[$j]\n";
}
For instance:
t.pl one,two three four
ARGV[0] = one,two
ARGV[1] = three
ARGV[2] = four
t.pl "one two" three four
ARGV[0] = one two
ARGV[1] = three
ARGV[2] = four
Notice that the command interpreter that I'm using has different "features" than yours...
Have fun,
Carl Forde