perl 2.0 (no announcement message available)
[p5sagit/p5-mst-13.2.git] / lib / getopt.pl
1 ;# $Header: getopt.pl,v 2.0 88/06/05 00:16:22 root Exp $
2
3 ;# Process single-character switches with switch clustering.  Pass one argument
4 ;# which is a string containing all switches that take an argument.  For each
5 ;# switch found, sets $opt_x (where x is the switch name) to the value of the
6 ;# argument, or 1 if no argument.  Switches which take an argument don't care
7 ;# whether there is a space between the switch and the argument.
8
9 ;# Usage:
10 ;#      do Getopt('oDI');  # -o, -D & -I take arg.  Sets opt_* as a side effect.
11
12 sub Getopt {
13     local($argumentative) = @_;
14     local($_,$first,$rest);
15
16     while (($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
17         ($first,$rest) = ($1,$2);
18         if (index($argumentative,$first) >= $[) {
19             if ($rest ne '') {
20                 shift;
21             }
22             else {
23                 shift;
24                 $rest = shift;
25             }
26             eval "\$opt_$first = \$rest;";
27         }
28         else {
29             eval "\$opt_$first = 1;";
30             if ($rest ne '') {
31                 $ARGV[0] = "-$rest";
32             }
33             else {
34                 shift;
35             }
36         }
37     }
38 }