On 2006-04-27 16:58, Gary Kline <[EMAIL PROTECTED]> wrote:
> > Getting at argv/argc is actually pretty simple in Perl. The global array
> > @ARGV contains the arguments given on the command-line, but not the name
> > of the file (this datum is contained in $0). Therefore your argv[1] in C
> > is $ARGV[0] in Perl. The number of command-line arguments can be
> > obtained in two ways, either you interpret the array in a scalar context
> > and get its length: ``my $argc = scalar @ARGV'' or you use the last
> > index of the array and add one: ``my $argc = $#ARGV + 1''. Of course, in
> > most cases you'll just want to loop over the command-line args, so a
> > foreach loop should suffice, or of course one of the Getopt (Getopt::Std
> > or Getopt::Long in most cases) modules.
> 
>       So, could I say:
> 
>       my $argc = $#ARGV+1; $count = 0;
>       while ($argc--)
>       {
>               if (! (checkErr($ARGV[$count], $count)))
>               {
>                       printf("Processing %s\n", $ARGV[$count]);
>                       doWhatever($ARGV[$count]);
>               }
>               $count++;
>       }
> 
>       or something close-to!?

I believe the idiomatic way of doing this would be something more like:

        foreach $arg (@ARGV) {
            if (!checkErr($arg)) {
                printf("Processing %s\n", $arg);
                doWhatever($arg);
            }
        }

Your version may work too, but I'm always wary of all the index
trickery involved in handling $#ARGV fearing it may easily lead to
off-by-one bugs.  So I prefer foreach() loops :)


_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to