batmonk has asked for the wisdom of the Perl Monks concerning the following question:
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Processing @ARGV using just spaces
by chipmunk (Parson) on May 17, 2001 at 22:06 UTC | |
|
Re: Processing @ARGV using just spaces
by Anonymous Monk on May 17, 2001 at 22:14 UTC | |
|
Re: Processing @ARGV using just spaces
by cforde (Monk) on May 17, 2001 at 22:23 UTC |