This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make reset() behave with high-bit characters
[perl5.git] / lib / getopt.pl
CommitLineData
79072805 1;# $RCSfile: getopt.pl,v $$Revision: 4.1 $$Date: 92/08/07 18:23:58 $
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);
ac58e20f 15 local($[) = 0;
378cc40b 16
55204971 17 while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
378cc40b
LW
18 ($first,$rest) = ($1,$2);
19 if (index($argumentative,$first) >= $[) {
20 if ($rest ne '') {
a687059c 21 shift(@ARGV);
378cc40b
LW
22 }
23 else {
a687059c
LW
24 shift(@ARGV);
25 $rest = shift(@ARGV);
378cc40b 26 }
29d4204f 27 ${"opt_$first"} = $rest;
378cc40b
LW
28 }
29 else {
29d4204f 30 ${"opt_$first"} = 1;
378cc40b
LW
31 if ($rest ne '') {
32 $ARGV[0] = "-$rest";
33 }
34 else {
a687059c 35 shift(@ARGV);
378cc40b
LW
36 }
37 }
38 }
39}
a687059c
LW
40
411;