Just looking at ways to handle cmdline arguments.  I know about
getopts but I found this snippet in programming perl book and wanted
to understand better what it is doing.

Probably horribly obvious I guess but what is the s/// operator
(s/^-(?=.)//) in the `ARG:' line doing here:

Also not sure of the significance of ARG: and OPT:  labels.  (I mean
how it would differ without them)

ARG: while (@ARGV && $ARGV[0] =~ s/^-(?=.)//) {
    OPT: for (shift @ARGV) {
         m/^$/       && do {                             next ARG; };
         m/^-$/      && do {                             last ARG; };
         s/^d//      && do { $Debug_Level++;             redo OPT; };
         s/^l//      && do { $Generate_Listing++;        redo OPT; };
         s/^i(.*)//  && do { $In_Place = $1 || ".bak";   next ARG; };
         say_usage("Unknown option: $_");
    }
}

Including the brief explanation from Programming perl (Third Ed.)

    Here's an example from a real program that uses all three
    loop-control operators. Although this particular strategy of
    parsing command-line arguments is less common now that we have
    the Getopts::* modules bundled with Perl, it's still a nice
    illustration of the use of loop-control operators on named,
    nested loops:


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to