This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 2.0 (no announcement message available)
[perl5.git] / lib / getopt.pl
CommitLineData
378cc40b
LW
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
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 '') {
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}