This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 3.0 patch #10 patch #9, continued
[perl5.git] / lib / getopt.pl
CommitLineData
a687059c 1;# $Header: getopt.pl,v 3.0 89/10/18 15:19:26 lwall Locked $
378cc40b
LW
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
12sub 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 '') {
a687059c 20 shift(@ARGV);
378cc40b
LW
21 }
22 else {
a687059c
LW
23 shift(@ARGV);
24 $rest = shift(@ARGV);
378cc40b
LW
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 {
a687059c 34 shift(@ARGV);
378cc40b
LW
35 }
36 }
37 }
38}
a687059c
LW
39
401;