I'm sorry if this is a FAQ, but I can't find it. Please consider:
#!/usr/bin/perl -w use strict; if (!@ARGV) {showhelp()} else { my $single = shift; my $remain = join( ' ', @ARGV ); print "First arg = $single\n"; print "Remaining = $remain\n"; } sub showhelp{ print <<"_HELP"; Trying to understand how Perl handles arguments Use: $0 First Second Third Fourth ... Nth Should output: First arg = First Remaining = Second Third Fourth ... Nth The idea is to save the first argument to a scalar and the remaining ones into a second scalar, with the space (and *only* a space) being used as a separator. _HELP }
When run, this works fine for:
%perl arg1.pl fred barney wilma First arg = fred Remaining = barney wilma
It returns the same result when the first argument contains a comma:
%perl arg1.pl fred,barney wilma First arg = fred Remaining = barney wilma
In the second case, I want $single to equal "fred,barney" and $remaining to equal "wilma". Can I do this? How? Why are commas considered separators? Is there a better way to do this? Thanks.
In reply to Processing @ARGV using just spaces by batmonk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |