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