in reply to Processing @ARGV using just spaces

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