I have been using the following code logic for years to process command line args but just came across a case where it was clobbering @ARGV and causing trouble:
my $arg; my $argcount = 0; my $debug = 0; my $infile; while (@ARGV) { $arg = shift @ARGV; if ($arg =~ /-d/) { $debug = 1; } elsif ($argcount == 0) { $infile = $arg; } }
The code in question that I was trying to write was doing a "while (<>)" and trying to read a filename specified on the command line but @ARGV had been "emptied" in my earlier arg script. But, this time I was not explicitly opening the file, rather trying to rely on the <> automatic processing mechanism.
I was wondering if there was a better way to do this to avoid this problem. I know that some options include the getopts stuff but I tried these several years ago and they were very clunky and difficuly to manage, IMHO.
In reply to getting args without clobbering @ARGV by bfdi533
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |