File Coverage

blib/lib/Getopt/Long.pm
Criterion Covered Total %
statement 382 696 54.8
branch 208 618 33.6
condition 103 308 33.4
subroutine 38 48 79.1
pod 0 8 0.0
total 731 1678 43.5


line stmt bran cond sub pod time code
1             #! perl
2              
3             # Getopt::Long.pm -- Universal options parsing
4             # Author : Johan Vromans
5             # Created On : Tue Sep 11 15:00:12 1990
6             # Last Modified By: Johan Vromans
7             # Last Modified On: Fri Aug 19 17:35:14 2022
8             # Update Count : 1756
9             # Status : Released
10              
11             ################ Module Preamble ################
12              
13 6     6   3342 use 5.004;
  6         36  
14              
15 6     6   27 use strict;
  6         8  
  6         102  
16 6     6   20 use warnings;
  6         9  
  6         227  
17              
18             package Getopt::Long;
19              
20 6     6   29 use vars qw($VERSION);
  6         8  
  6         451  
21             $VERSION = 2.52_002;
22             # For testing versions only.
23 6     6   34 use vars qw($VERSION_STRING);
  6         8  
  6         226  
24             $VERSION_STRING = "2.52_2";
25              
26 6     6   30 use Exporter;
  6         8  
  6         265  
27 6     6   30 use vars qw(@ISA @EXPORT @EXPORT_OK);
  6         14  
  6         727  
28             @ISA = qw(Exporter);
29              
30             # Exported subroutines.
31             sub GetOptions(@); # always
32             sub GetOptionsFromArray(@); # on demand
33             sub GetOptionsFromString(@); # on demand
34             sub Configure(@); # on demand
35             sub HelpMessage(@); # on demand
36             sub VersionMessage(@); # in demand
37              
38             BEGIN {
39             # Init immediately so their contents can be used in the 'use vars' below.
40 6     6   23 @EXPORT = qw(&GetOptions $REQUIRE_ORDER $PERMUTE $RETURN_IN_ORDER);
41 6         162 @EXPORT_OK = qw(&HelpMessage &VersionMessage &Configure
42             &GetOptionsFromArray &GetOptionsFromString);
43             }
44              
45             # User visible variables.
46 6     6   33 use vars @EXPORT, @EXPORT_OK;
  6         10  
  6         495  
47 6     6   34 use vars qw($error $debug $major_version $minor_version);
  6         18  
  6         403  
48             # Deprecated visible variables.
49 6         333 use vars qw($autoabbrev $getopt_compat $ignorecase $bundling $order
50 6     6   31 $passthrough);
  6         8  
51             # Official invisible variables.
52 6     6   36 use vars qw($genprefix $caller $gnu_compat $auto_help $auto_version $longprefix);
  6         8  
  6         4541  
53              
54             # Really invisible variables.
55             my $bundling_values;
56              
57             # Public subroutines.
58             sub config(@); # deprecated name
59              
60             # Private subroutines.
61             sub ConfigDefaults();
62             sub ParseOptionSpec($$);
63             sub OptCtl($);
64             sub FindOption($$$$$);
65             sub ValidValue ($$$$$);
66              
67             ################ Local Variables ################
68              
69             # $requested_version holds the version that was mentioned in the 'use'
70             # or 'require', if any. It can be used to enable or disable specific
71             # features.
72             my $requested_version = 0;
73              
74             ################ Resident subroutines ################
75              
76             sub ConfigDefaults() {
77             # Handle POSIX compliancy.
78 13 50   13 0 50 if ( defined $ENV{"POSIXLY_CORRECT"} ) {
79 0         0 $genprefix = "(--|-)";
80 0         0 $autoabbrev = 0; # no automatic abbrev of options
81 0         0 $bundling = 0; # no bundling of single letter switches
82 0         0 $getopt_compat = 0; # disallow '+' to start options
83 0         0 $order = $REQUIRE_ORDER;
84             }
85             else {
86 13         20 $genprefix = "(--|-|\\+)";
87 13         15 $autoabbrev = 1; # automatic abbrev of options
88 13         15 $bundling = 0; # bundling off by default
89 13         17 $getopt_compat = 1; # allow '+' to start options
90 13         19 $order = $PERMUTE;
91             }
92             # Other configurable settings.
93 13         32 $debug = 0; # for debugging
94 13         15 $error = 0; # error tally
95 13         16 $ignorecase = 1; # ignore case when matching options
96 13         16 $passthrough = 0; # leave unrecognized options alone
97 13         13 $gnu_compat = 0; # require --opt=val if value is optional
98 13         16 $longprefix = "(--)"; # what does a long prefix look like
99 13         20 $bundling_values = 0; # no bundling of values
100             }
101              
102             # Override import.
103             sub import {
104 6     6   37 my $pkg = shift; # package
105 6         11 my @syms = (); # symbols to import
106 6         11 my @config = (); # configuration
107 6         9 my $dest = \@syms; # symbols first
108 6         10 for ( @_ ) {
109 8 100       20 if ( $_ eq ':config' ) {
110 3         5 $dest = \@config; # config next
111 3         5 next;
112             }
113 5         12 push(@$dest, $_); # push
114             }
115             # Hide one level and call super.
116 6         11 local $Exporter::ExportLevel = 1;
117 6 100       20 push(@syms, qw(&GetOptions)) if @syms; # always export GetOptions
118 6         8 $requested_version = 0;
119 6         485 $pkg->SUPER::import(@syms);
120             # And configure.
121 6 100       2033 Configure(@config) if @config;
122             }
123              
124             ################ Initialization ################
125              
126             # Values for $order. See GNU getopt.c for details.
127             ($REQUIRE_ORDER, $PERMUTE, $RETURN_IN_ORDER) = (0..2);
128             # Version major/minor numbers.
129             ($major_version, $minor_version) = $VERSION =~ /^(\d+)\.(\d+)/;
130              
131             ConfigDefaults();
132              
133             ################ OO Interface ################
134              
135             package Getopt::Long::Parser;
136              
137             # Store a copy of the default configuration. Since ConfigDefaults has
138             # just been called, what we get from Configure is the default.
139             my $default_config = do {
140             Getopt::Long::Configure ()
141             };
142              
143             sub new {
144 2     2   43 my $that = shift;
145 2   33     9 my $class = ref($that) || $that;
146 2         5 my %atts = @_;
147              
148             # Register the callers package.
149 2         7 my $self = { caller_pkg => (caller)[0] };
150              
151 2         5 bless ($self, $class);
152              
153             # Process config attributes.
154 2 100       4 if ( defined $atts{config} ) {
155 1         2 my $save = Getopt::Long::Configure ($default_config, @{$atts{config}});
  1         3  
156 1         3 $self->{settings} = Getopt::Long::Configure ($save);
157 1         4 delete ($atts{config});
158             }
159             # Else use default config.
160             else {
161 1         2 $self->{settings} = $default_config;
162             }
163              
164 2 50       5 if ( %atts ) { # Oops
165 0         0 die(__PACKAGE__.": unhandled attributes: ".
166             join(" ", sort(keys(%atts)))."\n");
167             }
168              
169 2         4 $self;
170             }
171              
172             sub configure {
173 0     0   0 my ($self) = shift;
174              
175             # Restore settings, merge new settings in.
176 0         0 my $save = Getopt::Long::Configure ($self->{settings}, @_);
177              
178             # Restore orig config and save the new config.
179 0         0 $self->{settings} = Getopt::Long::Configure ($save);
180             }
181              
182             sub getoptions {
183 1     1   7 my ($self) = shift;
184              
185 1         4 return $self->getoptionsfromarray(\@ARGV, @_);
186             }
187              
188             sub getoptionsfromarray {
189 2     2   4 my ($self) = shift;
190              
191             # Restore config settings.
192 2         5 my $save = Getopt::Long::Configure ($self->{settings});
193              
194             # Call main routine.
195 2         4 my $ret = 0;
196 2         3 $Getopt::Long::caller = $self->{caller_pkg};
197              
198 2         3 eval {
199             # Locally set exception handler to default, otherwise it will
200             # be called implicitly here, and again explicitly when we try
201             # to deliver the messages.
202 2         9 local ($SIG{__DIE__}) = 'DEFAULT';
203 2         4 $ret = Getopt::Long::GetOptionsFromArray (@_);
204             };
205              
206             # Restore saved settings.
207 2         5 Getopt::Long::Configure ($save);
208              
209             # Handle errors and return value.
210 2 50       4 die ($@) if $@;
211 2         6 return $ret;
212             }
213              
214             package Getopt::Long;
215              
216             ################ Back to Normal ################
217              
218             # Indices in option control info.
219             # Note that ParseOptions uses the fields directly. Search for 'hard-wired'.
220 6     6   41 use constant CTL_TYPE => 0;
  6         24  
  6         574  
221             #use constant CTL_TYPE_FLAG => '';
222             #use constant CTL_TYPE_NEG => '!';
223             #use constant CTL_TYPE_INCR => '+';
224             #use constant CTL_TYPE_INT => 'i';
225             #use constant CTL_TYPE_INTINC => 'I';
226             #use constant CTL_TYPE_XINT => 'o';
227             #use constant CTL_TYPE_FLOAT => 'f';
228             #use constant CTL_TYPE_STRING => 's';
229              
230 6     6   35 use constant CTL_CNAME => 1;
  6         8  
  6         313  
231              
232 6     6   34 use constant CTL_DEFAULT => 2;
  6         11  
  6         269  
233              
234 6     6   33 use constant CTL_DEST => 3;
  6         9  
  6         285  
235 6     6   31 use constant CTL_DEST_SCALAR => 0;
  6         11  
  6         280  
236 6     6   32 use constant CTL_DEST_ARRAY => 1;
  6         8  
  6         270  
237 6     6   31 use constant CTL_DEST_HASH => 2;
  6         11  
  6         265  
238 6     6   30 use constant CTL_DEST_CODE => 3;
  6         9  
  6         242  
239              
240 6     6   30 use constant CTL_AMIN => 4;
  6         9  
  6         242  
241 6     6   29 use constant CTL_AMAX => 5;
  6         10  
  6         343  
242              
243             # FFU.
244             #use constant CTL_RANGE => ;
245             #use constant CTL_REPEAT => ;
246              
247             # Rather liberal patterns to match numbers.
248 6     6   100 use constant PAT_INT => "[-+]?_*[0-9][0-9_]*";
  6         12  
  6         389  
249 6         347 use constant PAT_XINT =>
250             "(?:".
251             "[-+]?_*[1-9][0-9_]*".
252             "|".
253             "0x_*[0-9a-f][0-9a-f_]*".
254             "|".
255             "0b_*[01][01_]*".
256             "|".
257             "0[0-7_]*".
258 6     6   33 ")";
  6         7  
259 6         41063 use constant PAT_FLOAT =>
260             "[-+]?". # optional sign
261             "(?=\\.?[0-9])". # must start with digit or dec.point
262             "[0-9_]*". # digits before the dec.point
263             "(\\.[0-9_]*)?". # optional fraction
264 6     6   32 "([eE][-+]?[0-9_]+)?"; # optional exponent
  6         7  
265              
266             sub GetOptions(@) {
267             # Shift in default array.
268 14     14   144 unshift(@_, \@ARGV);
269             # Try to keep caller() and Carp consistent.
270 14         37 goto &GetOptionsFromArray;
271             }
272              
273             sub GetOptionsFromString(@) {
274 3     3   69 my ($string) = shift;
275 3         428 require Text::ParseWords;
276 3         1132 my $args = [ Text::ParseWords::shellwords($string) ];
277 3   66     447 $caller ||= (caller)[0]; # current context
278 3         8 my $ret = GetOptionsFromArray($args, @_);
279 3 100       8 return ( $ret, $args ) if wantarray;
280 2 100       3 if ( @$args ) {
281 1         3 $ret = 0;
282 1         11 warn("GetOptionsFromString: Excess data \"@$args\" in string \"$string\"\n");
283             }
284 2         10 $ret;
285             }
286              
287             sub GetOptionsFromArray(@) {
288              
289 20     20   75 my ($argv, @optionlist) = @_; # local copy of the option descriptions
290 20         28 my $argend = '--'; # option list terminator
291 20         26 my %opctl = (); # table of option specs
292 20   66     79 my $pkg = $caller || (caller)[0]; # current context
293             # Needed if linkage is omitted.
294 20         34 my @ret = (); # accum for non-options
295 20         41 my %linkage; # linkage
296             my $userlinkage; # user supplied HASH
297 20         0 my $opt; # current option
298 20         28 my $prefix = $genprefix; # current prefix
299              
300 20         26 $error = '';
301              
302 20 50       35 if ( $debug ) {
303             # Avoid some warnings if debugging.
304 0         0 local ($^W) = 0;
305 0 0       0 print STDERR
    0          
306             ("Getopt::Long $Getopt::Long::VERSION_STRING ",
307             "called from package \"$pkg\".",
308             "\n ",
309             "argv: ",
310             defined($argv)
311             ? UNIVERSAL::isa( $argv, 'ARRAY' ) ? "(@$argv)" : $argv
312             : "",
313             "\n ",
314             "autoabbrev=$autoabbrev,".
315             "bundling=$bundling,",
316             "bundling_values=$bundling_values,",
317             "getopt_compat=$getopt_compat,",
318             "gnu_compat=$gnu_compat,",
319             "order=$order,",
320             "\n ",
321             "ignorecase=$ignorecase,",
322             "requested_version=$requested_version,",
323             "passthrough=$passthrough,",
324             "genprefix=\"$genprefix\",",
325             "longprefix=\"$longprefix\".",
326             "\n");
327             }
328              
329             # Check for ref HASH as first argument.
330             # First argument may be an object. It's OK to use this as long
331             # as it is really a hash underneath.
332 20         30 $userlinkage = undef;
333 20 100 66     85 if ( @optionlist && ref($optionlist[0]) and
      66        
334             UNIVERSAL::isa($optionlist[0],'HASH') ) {
335 6         10 $userlinkage = shift (@optionlist);
336 6 50       20 print STDERR ("=> user linkage: $userlinkage\n") if $debug;
337             }
338              
339             # See if the first element of the optionlist contains option
340             # starter characters.
341             # Be careful not to interpret '<>' as option starters.
342 20 50 33     130 if ( @optionlist && $optionlist[0] =~ /^\W+$/
      0        
      33        
343             && !($optionlist[0] eq '<>'
344             && @optionlist > 0
345             && ref($optionlist[1])) ) {
346 0         0 $prefix = shift (@optionlist);
347             # Turn into regexp. Needs to be parenthesized!
348 0         0 $prefix =~ s/(\W)/\\$1/g;
349 0         0 $prefix = "([" . $prefix . "])";
350 0 0       0 print STDERR ("=> prefix=\"$prefix\"\n") if $debug;
351             }
352              
353             # Verify correctness of optionlist.
354 20         33 %opctl = ();
355 20         44 while ( @optionlist ) {
356 38         59 my $opt = shift (@optionlist);
357              
358 38 50       65 unless ( defined($opt) ) {
359 0         0 $error .= "Undefined argument in option spec\n";
360 0         0 next;
361             }
362              
363             # Strip leading prefix so people can specify "--foo=i" if they like.
364 38 50       339 $opt = $+ if $opt =~ /^$prefix+(.*)$/s;
365              
366 38 100       122 if ( $opt eq '<>' ) {
367 2 0 0     5 if ( (defined $userlinkage)
      33        
      33        
      0        
368             && !(@optionlist > 0 && ref($optionlist[0]))
369             && (exists $userlinkage->{$opt})
370             && ref($userlinkage->{$opt}) ) {
371 0         0 unshift (@optionlist, $userlinkage->{$opt});
372             }
373 2 50 33     12 unless ( @optionlist > 0
      33        
374             && ref($optionlist[0]) && ref($optionlist[0]) eq 'CODE' ) {
375 0         0 $error .= "Option spec <> requires a reference to a subroutine\n";
376             # Kill the linkage (to avoid another error).
377 0 0 0     0 shift (@optionlist)
378             if @optionlist && ref($optionlist[0]);
379 0         0 next;
380             }
381 2         3 $linkage{'<>'} = shift (@optionlist);
382 2         5 next;
383             }
384              
385             # Parse option spec.
386 36         105 my ($name, $orig) = ParseOptionSpec ($opt, \%opctl);
387 36 50       89 unless ( defined $name ) {
388             # Failed. $orig contains the error message. Sorry for the abuse.
389 0         0 $error .= $orig;
390             # Kill the linkage (to avoid another error).
391 0 0 0     0 shift (@optionlist)
392             if @optionlist && ref($optionlist[0]);
393 0         0 next;
394             }
395              
396             # If no linkage is supplied in the @optionlist, copy it from
397             # the userlinkage if available.
398 36 100       64 if ( defined $userlinkage ) {
399 11 100 100     29 unless ( @optionlist > 0 && ref($optionlist[0]) ) {
400 6 50 33     13 if ( exists $userlinkage->{$orig} &&
401             ref($userlinkage->{$orig}) ) {
402 0 0       0 print STDERR ("=> found userlinkage for \"$orig\": ",
403             "$userlinkage->{$orig}\n")
404             if $debug;
405 0         0 unshift (@optionlist, $userlinkage->{$orig});
406             }
407             else {
408             # Do nothing. Being undefined will be handled later.
409 6         15 next;
410             }
411             }
412             }
413              
414             # Copy the linkage. If omitted, link to global variable.
415 30 100 100     100 if ( @optionlist > 0 && ref($optionlist[0]) ) {
416 15 50       27 print STDERR ("=> link \"$orig\" to $optionlist[0]\n")
417             if $debug;
418 15         27 my $rl = ref($linkage{$orig} = shift (@optionlist));
419              
420 15 50 66     61 if ( $rl eq "ARRAY" ) {
    50          
    100          
    50          
421 0         0 $opctl{$name}[CTL_DEST] = CTL_DEST_ARRAY;
422             }
423             elsif ( $rl eq "HASH" ) {
424 0         0 $opctl{$name}[CTL_DEST] = CTL_DEST_HASH;
425             }
426             elsif ( $rl eq "SCALAR" || $rl eq "REF" ) {
427             # if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) {
428             # my $t = $linkage{$orig};
429             # $$t = $linkage{$orig} = [];
430             # }
431             # elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) {
432             # }
433             # else {
434             # Ok.
435             # }
436             }
437             elsif ( $rl eq "CODE" ) {
438             # Ok.
439             }
440             else {
441 0         0 $error .= "Invalid option linkage for \"$opt\"\n";
442             }
443             }
444             else {
445             # Link to global $opt_XXX variable.
446             # Make sure a valid perl identifier results.
447 15         22 my $ov = $orig;
448 15         33 $ov =~ s/\W/_/g;
449 15 50       79 if ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY ) {
    50          
450 0 0       0 print STDERR ("=> link \"$orig\" to \@$pkg","::opt_$ov\n")
451             if $debug;
452 0         0 eval ("\$linkage{\$orig} = \\\@".$pkg."::opt_$ov;");
453             }
454             elsif ( $opctl{$name}[CTL_DEST] == CTL_DEST_HASH ) {
455 0 0       0 print STDERR ("=> link \"$orig\" to \%$pkg","::opt_$ov\n")
456             if $debug;
457 0         0 eval ("\$linkage{\$orig} = \\\%".$pkg."::opt_$ov;");
458             }
459             else {
460 15 50       42 print STDERR ("=> link \"$orig\" to \$$pkg","::opt_$ov\n")
461             if $debug;
462 15         911 eval ("\$linkage{\$orig} = \\\$".$pkg."::opt_$ov;");
463             }
464             }
465              
466 30 0 0     126 if ( $opctl{$name}[CTL_TYPE] eq 'I'
      33        
467             && ( $opctl{$name}[CTL_DEST] == CTL_DEST_ARRAY
468             || $opctl{$name}[CTL_DEST] == CTL_DEST_HASH )
469             ) {
470 0         0 $error .= "Invalid option linkage for \"$opt\"\n";
471             }
472              
473             }
474              
475 20 50 33     104 $error .= "GetOptionsFromArray: 1st parameter is not an array reference\n"
476             unless $argv && UNIVERSAL::isa( $argv, 'ARRAY' );
477              
478             # Bail out if errors found.
479 20 50       38 die ($error) if $error;
480 20         27 $error = 0;
481              
482             # Supply --version and --help support, if needed and allowed.
483 20 50       62 if ( defined($auto_version) ? $auto_version : ($requested_version >= 2.3203) ) {
    50          
484 0 0       0 if ( !defined($opctl{version}) ) {
485 0         0 $opctl{version} = ['','version',0,CTL_DEST_CODE,undef];
486 0         0 $linkage{version} = \&VersionMessage;
487             }
488 0         0 $auto_version = 1;
489             }
490 20 50       52 if ( defined($auto_help) ? $auto_help : ($requested_version >= 2.3203) ) {
    50          
491 0 0 0     0 if ( !defined($opctl{help}) && !defined($opctl{'?'}) ) {
492 0         0 $opctl{help} = $opctl{'?'} = ['','help',0,CTL_DEST_CODE,undef];
493 0         0 $linkage{help} = \&HelpMessage;
494             }
495 0         0 $auto_help = 1;
496             }
497              
498             # Show the options tables if debugging.
499 20 50       44 if ( $debug ) {
500 0         0 my ($arrow, $k, $v);
501 0         0 $arrow = "=> ";
502 0         0 while ( ($k,$v) = each(%opctl) ) {
503 0         0 print STDERR ($arrow, "\$opctl{$k} = $v ", OptCtl($v), "\n");
504 0         0 $arrow = " ";
505             }
506             }
507              
508             # Process argument list
509 20         26 my $goon = 1;
510 20   66     85 while ( $goon && @$argv > 0 ) {
511              
512             # Get next argument.
513 52         84 $opt = shift (@$argv);
514 52 50       82 print STDERR ("=> arg \"", $opt, "\"\n") if $debug;
515              
516             # Double dash is option list terminator.
517 52 100 66     142 if ( defined($opt) && $opt eq $argend ) {
518 1 50       3 push (@ret, $argend) if $passthrough;
519 1         1 last;
520             }
521              
522             # Look it up.
523 51         64 my $tryopt = $opt;
524 51         142 my $found; # success status
525             my $key; # key (if hash type)
526 51         0 my $arg; # option argument
527 51         0 my $ctl; # the opctl entry
528 51         0 my $starter; # the actual starter character(s)
529              
530 51         95 ($found, $opt, $ctl, $starter, $arg, $key) =
531             FindOption ($argv, $prefix, $argend, $opt, \%opctl);
532              
533 51 100       133 if ( $found ) {
    100          
534              
535             # FindOption undefines $opt in case of errors.
536 36 100       71 next unless defined $opt;
537              
538 35         42 my $argcnt = 0;
539 35         61 while ( defined $arg ) {
540              
541             # Get the canonical name.
542 35         51 my $given = $opt;
543 35 50       56 print STDERR ("=> cname for \"$opt\" is ") if $debug;
544 35         44 $opt = $ctl->[CTL_CNAME];
545 35 50       54 print STDERR ("\"$ctl->[CTL_CNAME]\"\n") if $debug;
546              
547 35 100       83 if ( defined $linkage{$opt} ) {
    50          
    50          
548             print STDERR ("=> ref(\$L{$opt}) -> ",
549 30 50       51 ref($linkage{$opt}), "\n") if $debug;
550              
551 30 100 66     111 if ( ref($linkage{$opt}) eq 'SCALAR'
    50          
    50          
    50          
552             || ref($linkage{$opt}) eq 'REF' ) {
553 29 50       85 if ( $ctl->[CTL_TYPE] eq '+' ) {
    50          
    50          
554 0 0       0 print STDERR ("=> \$\$L{$opt} += \"$arg\"\n")
555             if $debug;
556 0 0       0 if ( defined ${$linkage{$opt}} ) {
  0         0  
557 0         0 ${$linkage{$opt}} += $arg;
  0         0  
558             }
559             else {
560 0         0 ${$linkage{$opt}} = $arg;
  0         0  
561             }
562             }
563             elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) {
564 0 0       0 print STDERR ("=> ref(\$L{$opt}) auto-vivified",
565             " to ARRAY\n")
566             if $debug;
567 0         0 my $t = $linkage{$opt};
568 0         0 $$t = $linkage{$opt} = [];
569 0 0       0 print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n")
570             if $debug;
571 0         0 push (@{$linkage{$opt}}, $arg);
  0         0  
572             }
573             elsif ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
574 0 0       0 print STDERR ("=> ref(\$L{$opt}) auto-vivified",
575             " to HASH\n")
576             if $debug;
577 0         0 my $t = $linkage{$opt};
578 0         0 $$t = $linkage{$opt} = {};
579 0 0       0 print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n")
580             if $debug;
581 0         0 $linkage{$opt}->{$key} = $arg;
582             }
583             else {
584 29 50       45 print STDERR ("=> \$\$L{$opt} = \"$arg\"\n")
585             if $debug;
586 29         40 ${$linkage{$opt}} = $arg;
  29         52  
587             }
588             }
589             elsif ( ref($linkage{$opt}) eq 'ARRAY' ) {
590 0 0       0 print STDERR ("=> push(\@{\$L{$opt}, \"$arg\")\n")
591             if $debug;
592 0         0 push (@{$linkage{$opt}}, $arg);
  0         0  
593             }
594             elsif ( ref($linkage{$opt}) eq 'HASH' ) {
595 0 0       0 print STDERR ("=> \$\$L{$opt}->{$key} = \"$arg\"\n")
596             if $debug;
597 0         0 $linkage{$opt}->{$key} = $arg;
598             }
599             elsif ( ref($linkage{$opt}) eq 'CODE' ) {
600 1 0       3 print STDERR ("=> &L{$opt}(\"$opt\"",
    50          
601             $ctl->[CTL_DEST] == CTL_DEST_HASH ? ", \"$key\"" : "",
602             ", \"$arg\")\n")
603             if $debug;
604 1         2 my $eval_error = do {
605 1         1 local $@;
606 1         5 local $SIG{__DIE__} = 'DEFAULT';
607 1         2 eval {
608 1 50       8 &{$linkage{$opt}}
  1         4  
609             (Getopt::Long::CallBack->new
610             (name => $opt,
611             given => $given,
612             ctl => $ctl,
613             opctl => \%opctl,
614             linkage => \%linkage,
615             prefix => $prefix,
616             starter => $starter,
617             ),
618             $ctl->[CTL_DEST] == CTL_DEST_HASH ? ($key) : (),
619             $arg);
620             };
621 1         12 $@;
622             };
623 1 50 33     3 print STDERR ("=> die($eval_error)\n")
624             if $debug && $eval_error ne '';
625 1 50       5 if ( $eval_error =~ /^!/ ) {
    50          
626 0 0       0 if ( $eval_error =~ /^!FINISH\b/ ) {
627 0         0 $goon = 0;
628             }
629             }
630             elsif ( $eval_error ne '' ) {
631 0         0 warn ($eval_error);
632 0         0 $error++;
633             }
634             }
635             else {
636 0         0 print STDERR ("Invalid REF type \"", ref($linkage{$opt}),
637             "\" in linkage\n");
638 0         0 die("Getopt::Long -- internal error!\n");
639             }
640             }
641             # No entry in linkage means entry in userlinkage.
642             elsif ( $ctl->[CTL_DEST] == CTL_DEST_ARRAY ) {
643 0 0       0 if ( defined $userlinkage->{$opt} ) {
644 0 0       0 print STDERR ("=> push(\@{\$L{$opt}}, \"$arg\")\n")
645             if $debug;
646 0         0 push (@{$userlinkage->{$opt}}, $arg);
  0         0  
647             }
648             else {
649 0 0       0 print STDERR ("=>\$L{$opt} = [\"$arg\"]\n")
650             if $debug;
651 0         0 $userlinkage->{$opt} = [$arg];
652             }
653             }
654             elsif ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
655 0 0       0 if ( defined $userlinkage->{$opt} ) {
656 0 0       0 print STDERR ("=> \$L{$opt}->{$key} = \"$arg\"\n")
657             if $debug;
658 0         0 $userlinkage->{$opt}->{$key} = $arg;
659             }
660             else {
661 0 0       0 print STDERR ("=>\$L{$opt} = {$key => \"$arg\"}\n")
662             if $debug;
663 0         0 $userlinkage->{$opt} = {$key => $arg};
664             }
665             }
666             else {
667 5 50       10 if ( $ctl->[CTL_TYPE] eq '+' ) {
668 0 0       0 print STDERR ("=> \$L{$opt} += \"$arg\"\n")
669             if $debug;
670 0 0       0 if ( defined $userlinkage->{$opt} ) {
671 0         0 $userlinkage->{$opt} += $arg;
672             }
673             else {
674 0         0 $userlinkage->{$opt} = $arg;
675             }
676             }
677             else {
678 5 50       8 print STDERR ("=>\$L{$opt} = \"$arg\"\n") if $debug;
679 5         8 $userlinkage->{$opt} = $arg;
680             }
681             }
682              
683 35         41 $argcnt++;
684 35 50 33     175 last if $argcnt >= $ctl->[CTL_AMAX] && $ctl->[CTL_AMAX] != -1;
685 0         0 undef($arg);
686              
687             # Need more args?
688 0 0       0 if ( $argcnt < $ctl->[CTL_AMIN] ) {
689 0 0       0 if ( @$argv ) {
690 0 0       0 if ( ValidValue($ctl, $argv->[0], 1, $argend, $prefix) ) {
691 0         0 $arg = shift(@$argv);
692 0 0       0 if ( $ctl->[CTL_TYPE] =~ /^[iIo]$/ ) {
693 0         0 $arg =~ tr/_//d;
694 0 0 0     0 $arg = $ctl->[CTL_TYPE] eq 'o' && $arg =~ /^0/
695             ? oct($arg)
696             : 0+$arg
697             }
698 0 0       0 ($key,$arg) = $arg =~ /^([^=]+)=(.*)/
699             if $ctl->[CTL_DEST] == CTL_DEST_HASH;
700 0         0 next;
701             }
702 0         0 warn("Value \"$$argv[0]\" invalid for option $opt\n");
703 0         0 $error++;
704             }
705             else {
706 0         0 warn("Insufficient arguments for option $opt\n");
707 0         0 $error++;
708             }
709             }
710              
711             # Any more args?
712 0 0 0     0 if ( @$argv && ValidValue($ctl, $argv->[0], 0, $argend, $prefix) ) {
713 0         0 $arg = shift(@$argv);
714 0 0       0 if ( $ctl->[CTL_TYPE] =~ /^[iIo]$/ ) {
715 0         0 $arg =~ tr/_//d;
716 0 0 0     0 $arg = $ctl->[CTL_TYPE] eq 'o' && $arg =~ /^0/
717             ? oct($arg)
718             : 0+$arg
719             }
720 0 0       0 ($key,$arg) = $arg =~ /^([^=]+)=(.*)/
721             if $ctl->[CTL_DEST] == CTL_DEST_HASH;
722 0         0 next;
723             }
724             }
725             }
726              
727             # Not an option. Save it if we $PERMUTE and don't have a <>.
728             elsif ( $order == $PERMUTE ) {
729             # Try non-options call-back.
730 14         20 my $cb;
731 14 100       48 if ( defined ($cb = $linkage{'<>'}) ) {
732 3 50       6 print STDERR ("=> &L{$tryopt}(\"$tryopt\")\n")
733             if $debug;
734 3         4 my $eval_error = do {
735 3         3 local $@;
736 3         9 local $SIG{__DIE__} = 'DEFAULT';
737 3         7 eval {
738             # The arg to <> cannot be the CallBack object
739             # since it may be passed to other modules that
740             # get confused (e.g., Archive::Tar). Well,
741             # it's not relevant for this callback anyway.
742 3         5 &$cb($tryopt);
743             };
744 3         15 $@;
745             };
746 3 50 33     8 print STDERR ("=> die($eval_error)\n")
747             if $debug && $eval_error ne '';
748 3 50       8 if ( $eval_error =~ /^!/ ) {
    50          
749 0 0       0 if ( $eval_error =~ /^!FINISH\b/ ) {
750 0         0 $goon = 0;
751             }
752             }
753             elsif ( $eval_error ne '' ) {
754 0         0 warn ($eval_error);
755 0         0 $error++;
756             }
757             }
758             else {
759 11 50       30 print STDERR ("=> saving \"$tryopt\" ",
760             "(not an option, may permute)\n") if $debug;
761 11         22 push (@ret, $tryopt);
762             }
763 14         49 next;
764             }
765              
766             # ...otherwise, terminate.
767             else {
768             # Push this one back and exit.
769 1         2 unshift (@$argv, $tryopt);
770 1         6 return ($error == 0);
771             }
772              
773             }
774              
775             # Finish.
776 19 50 33     61 if ( @ret && ( $order == $PERMUTE || $passthrough ) ) {
      66        
777             # Push back accumulated arguments
778 9 50       20 print STDERR ("=> restoring \"", join('" "', @ret), "\"\n")
779             if $debug;
780 9         17 unshift (@$argv, @ret);
781             }
782              
783 19         96 return ($error == 0);
784             }
785              
786             # A readable representation of what's in an optbl.
787             sub OptCtl ($) {
788 0     0 0 0 my ($v) = @_;
789 0 0       0 my @v = map { defined($_) ? ($_) : ("") } @$v;
  0         0  
790 0   0     0 "[".
      0        
      0        
791             join(",",
792             "\"$v[CTL_TYPE]\"",
793             "\"$v[CTL_CNAME]\"",
794             "\"$v[CTL_DEFAULT]\"",
795             ("\$","\@","\%","\&")[$v[CTL_DEST] || 0],
796             $v[CTL_AMIN] || '',
797             $v[CTL_AMAX] || '',
798             # $v[CTL_RANGE] || '',
799             # $v[CTL_REPEAT] || '',
800             ). "]";
801             }
802              
803             # Parse an option specification and fill the tables.
804             sub ParseOptionSpec ($$) {
805 36     36 0 66 my ($opt, $opctl) = @_;
806              
807             # Match option spec.
808 36 50       160 if ( $opt !~ m;^
809             (
810             # Option name
811             (?: \w+[-\w]* )
812             # Aliases
813             (?: \| (?: . [^|!+=:]* )? )*
814             )?
815             (
816             # Either modifiers ...
817             [!+]
818             |
819             # ... or a value/dest/repeat specification
820             [=:] [ionfs] [@%]? (?: \{\d*,?\d*\} )?
821             |
822             # ... or an optional-with-default spec
823             : (?: -?\d+ | \+ ) [@%]?
824             )?
825             $;x ) {
826 0         0 return (undef, "Error in option spec: \"$opt\"\n");
827             }
828              
829 36         100 my ($names, $spec) = ($1, $2);
830 36 100       67 $spec = '' unless defined $spec;
831              
832             # $orig keeps track of the primary name the user specified.
833             # This name will be used for the internal or external linkage.
834             # In other words, if the user specifies "FoO|BaR", it will
835             # match any case combinations of 'foo' and 'bar', but if a global
836             # variable needs to be set, it will be $opt_FoO in the exact case
837             # as specified.
838 36         44 my $orig;
839              
840             my @names;
841 36 50       57 if ( defined $names ) {
842 36         94 @names = split (/\|/, $names);
843 36         47 $orig = $names[0];
844             }
845             else {
846 0         0 @names = ('');
847 0         0 $orig = '';
848             }
849              
850             # Construct the opctl entries.
851 36         41 my $entry;
852 36 100 66     192 if ( $spec eq '' || $spec eq '+' || $spec eq '!' ) {
    50 100        
853             # Fields are hard-wired here.
854 19         51 $entry = [$spec,$orig,undef,CTL_DEST_SCALAR,0,0];
855             }
856             elsif ( $spec =~ /^:(-?\d+|\+)([@%])?$/ ) {
857 0         0 my $def = $1;
858 0         0 my $dest = $2;
859 0 0       0 my $type = $def eq '+' ? 'I' : 'i';
860 0   0     0 $dest ||= '$';
861 0 0       0 $dest = $dest eq '@' ? CTL_DEST_ARRAY
    0          
862             : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
863             # Fields are hard-wired here.
864 0 0       0 $entry = [$type,$orig,$def eq '+' ? undef : $def,
865             $dest,0,1];
866             }
867             else {
868 17         80 my ($mand, $type, $dest) =
869             $spec =~ /^([=:])([ionfs])([@%])?(\{(\d+)?(,)?(\d+)?\})?$/;
870 17 50 66     52 return (undef, "Cannot repeat while bundling: \"$opt\"\n")
871             if $bundling && defined($4);
872 17         40 my ($mi, $cm, $ma) = ($5, $6, $7);
873 17 0 33     38 return (undef, "{0} is useless in option spec: \"$opt\"\n")
      33        
      0        
874             if defined($mi) && !$mi && !defined($ma) && !defined($cm);
875              
876 17 50       33 $type = 'i' if $type eq 'n';
877 17   50     67 $dest ||= '$';
878 17 50       52 $dest = $dest eq '@' ? CTL_DEST_ARRAY
    50          
879             : $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
880             # Default minargs to 1/0 depending on mand status.
881 17 100       53 $mi = $mand eq '=' ? 1 : 0 unless defined $mi;
    50          
882             # Adjust mand status according to minargs.
883 17 100       34 $mand = $mi ? '=' : ':';
884             # Adjust maxargs.
885 17 100 33     75 $ma = $mi ? $mi : 1 unless defined $ma || defined $cm;
    50          
886 17 50 33     50 return (undef, "Max must be greater than zero in option spec: \"$opt\"\n")
887             if defined($ma) && !$ma;
888 17 50 33     58 return (undef, "Max less than min in option spec: \"$opt\"\n")
889             if defined($ma) && $ma < $mi;
890              
891             # Fields are hard-wired here.
892 17   50     80 $entry = [$type,$orig,undef,$dest,$mi,$ma||-1];
893             }
894              
895             # Process all names. First is canonical, the rest are aliases.
896 36         50 my $dups = '';
897 36         85 foreach ( @names ) {
898              
899 36 50 66     116 $_ = lc ($_)
    100          
900             if $ignorecase > (($bundling && length($_) == 1) ? 1 : 0);
901              
902 36 50       72 if ( exists $opctl->{$_} ) {
903 0         0 $dups .= "Duplicate specification \"$opt\" for option \"$_\"\n";
904             }
905              
906 36 100       61 if ( $spec eq '!' ) {
907 4         10 $opctl->{"no$_"} = $entry;
908 4         7 $opctl->{"no-$_"} = $entry;
909 4         26 $opctl->{$_} = [@$entry];
910 4         11 $opctl->{$_}->[CTL_TYPE] = '';
911             }
912             else {
913 32         64 $opctl->{$_} = $entry;
914             }
915             }
916              
917 36 0 33     105 if ( $dups && $^W ) {
918 0         0 foreach ( split(/\n+/, $dups) ) {
919 0         0 warn($_."\n");
920             }
921             }
922 36         137 ($names[0], $orig);
923             }
924              
925             # Option lookup.
926             sub FindOption ($$$$$) {
927              
928             # returns (1, $opt, $ctl, $starter, $arg, $key) if okay,
929             # returns (1, undef) if option in error,
930             # returns (0) otherwise.
931              
932 51     51 0 105 my ($argv, $prefix, $argend, $opt, $opctl) = @_;
933              
934 51 50       76 print STDERR ("=> find \"$opt\"\n") if $debug;
935              
936 51 50       83 return (0) unless defined($opt);
937 51 100       415 return (0) unless $opt =~ /^($prefix)(.*)$/s;
938 39 50 33     101 return (0) if $opt eq "-" && !defined $opctl->{''};
939              
940 39         102 $opt = substr( $opt, length($1) ); # retain taintedness
941 39         55 my $starter = $1;
942              
943 39 50       69 print STDERR ("=> split \"$starter\"+\"$opt\"\n") if $debug;
944              
945 39         50 my $optarg; # value supplied with --opt=value
946             my $rest; # remainder from unbundling
947              
948             # If it is a long option, it may include the value.
949             # With getopt_compat, only if not bundling.
950 39 100 100     372 if ( ($starter=~/^$longprefix$/
      100        
951             || ($getopt_compat && ($bundling == 0 || $bundling == 2)))
952             && (my $oppos = index($opt, '=', 1)) > 0) {
953 3         6 my $optorg = $opt;
954 3         8 $opt = substr($optorg, 0, $oppos);
955 3         5 $optarg = substr($optorg, $oppos + 1); # retain tainedness
956 3 50       8 print STDERR ("=> option \"", $opt,
957             "\", optarg = \"$optarg\"\n") if $debug;
958             }
959              
960             #### Look it up ###
961              
962 39         57 my $tryopt = $opt; # option to try
963              
964 39 50 66     226 if ( ( $bundling || $bundling_values ) && $starter eq '-' ) {
    50 66        
    0 33        
965              
966             # To try overrides, obey case ignore.
967 0 0       0 $tryopt = $ignorecase ? lc($opt) : $opt;
968              
969             # If bundling == 2, long options can override bundles.
970 0 0 0     0 if ( $bundling == 2 && length($tryopt) > 1
    0 0        
971             && defined ($opctl->{$tryopt}) ) {
972 0 0       0 print STDERR ("=> $starter$tryopt overrides unbundling\n")
973             if $debug;
974             }
975              
976             # If bundling_values, option may be followed by the value.
977             elsif ( $bundling_values ) {
978 0         0 $tryopt = $opt;
979             # Unbundle single letter option.
980 0 0       0 $rest = length ($tryopt) > 0 ? substr ($tryopt, 1) : '';
981 0         0 $tryopt = substr ($tryopt, 0, 1);
982 0 0       0 $tryopt = lc ($tryopt) if $ignorecase > 1;
983 0 0       0 print STDERR ("=> $starter$tryopt unbundled from ",
984             "$starter$tryopt$rest\n") if $debug;
985             # Whatever remains may not be considered an option.
986 0 0       0 $optarg = $rest eq '' ? undef : $rest;
987 0         0 $rest = undef;
988             }
989              
990             # Split off a single letter and leave the rest for
991             # further processing.
992             else {
993 0         0 $tryopt = $opt;
994             # Unbundle single letter option.
995 0 0       0 $rest = length ($tryopt) > 0 ? substr ($tryopt, 1) : '';
996 0         0 $tryopt = substr ($tryopt, 0, 1);
997 0 0       0 $tryopt = lc ($tryopt) if $ignorecase > 1;
998 0 0       0 print STDERR ("=> $starter$tryopt unbundled from ",
999             "$starter$tryopt$rest\n") if $debug;
1000 0 0       0 $rest = undef unless $rest ne '';
1001             }
1002             }
1003              
1004             # Try auto-abbreviation.
1005             elsif ( $autoabbrev && $opt ne "" ) {
1006             # Sort the possible long option names.
1007 39         161 my @names = sort(keys (%$opctl));
1008             # Downcase if allowed.
1009 39 100       104 $opt = lc ($opt) if $ignorecase;
1010 39         60 $tryopt = $opt;
1011             # Turn option name into pattern.
1012 39         58 my $pat = quotemeta ($opt);
1013             # Look up in option names.
1014 39         518 my @hits = grep (/^$pat/, @names);
1015 39 50       98 print STDERR ("=> ", scalar(@hits), " hits (@hits) with \"$pat\" ",
1016             "out of ", scalar(@names), "\n") if $debug;
1017              
1018             # Check for ambiguous results.
1019 39 50 33     86 unless ( (@hits <= 1) || (grep ($_ eq $opt, @hits) == 1) ) {
1020             # See if all matches are for the same option.
1021 0         0 my %hit;
1022 0         0 foreach ( @hits ) {
1023             my $hit = $opctl->{$_}->[CTL_CNAME]
1024 0 0       0 if defined $opctl->{$_}->[CTL_CNAME];
1025 0 0       0 $hit = "no" . $hit if $opctl->{$_}->[CTL_TYPE] eq '!';
1026 0         0 $hit{$hit} = 1;
1027             }
1028             # Remove auto-supplied options (version, help).
1029 0 0       0 if ( keys(%hit) == 2 ) {
1030 0 0 0     0 if ( $auto_version && exists($hit{version}) ) {
    0 0        
1031 0         0 delete $hit{version};
1032             }
1033             elsif ( $auto_help && exists($hit{help}) ) {
1034 0         0 delete $hit{help};
1035             }
1036             }
1037             # Now see if it really is ambiguous.
1038 0 0       0 unless ( keys(%hit) == 1 ) {
1039 0 0       0 return (0) if $passthrough;
1040 0         0 warn ("Option ", $opt, " is ambiguous (",
1041             join(", ", @hits), ")\n");
1042 0         0 $error++;
1043 0         0 return (1, undef);
1044             }
1045 0         0 @hits = keys(%hit);
1046             }
1047              
1048             # Complete the option name, if appropriate.
1049 39 50 66     142 if ( @hits == 1 && $hits[0] ne $opt ) {
1050 0         0 $tryopt = $hits[0];
1051 0 0 0     0 $tryopt = lc ($tryopt)
    0          
1052             if $ignorecase > (($bundling && length($tryopt) == 1) ? 1 : 0);
1053 0 0       0 print STDERR ("=> option \"$opt\" -> \"$tryopt\"\n")
1054             if $debug;
1055             }
1056             }
1057              
1058             # Map to all lowercase if ignoring case.
1059             elsif ( $ignorecase ) {
1060 0         0 $tryopt = lc ($opt);
1061             }
1062              
1063             # Check validity by fetching the info.
1064 39         66 my $ctl = $opctl->{$tryopt};
1065 39 100       74 unless ( defined $ctl ) {
1066 4 100       12 return (0) if $passthrough;
1067             # Pretend one char when bundling.
1068 1 50 33     5 if ( $bundling == 1 && length($starter) == 1 ) {
1069 1         3 $opt = substr($opt,0,1);
1070 1 50       2 unshift (@$argv, $starter.$rest) if defined $rest;
1071             }
1072 1 50       3 if ( $opt eq "" ) {
1073 0         0 warn ("Missing option after ", $starter, "\n");
1074             }
1075             else {
1076 1         11 warn ("Unknown option: ", $opt, "\n");
1077             }
1078 1         7 $error++;
1079 1         3 return (1, undef);
1080             }
1081             # Apparently valid.
1082 35         49 $opt = $tryopt;
1083 35 50       52 print STDERR ("=> found ", OptCtl($ctl),
1084             " for \"", $opt, "\"\n") if $debug;
1085              
1086             #### Determine argument status ####
1087              
1088             # If it is an option w/o argument, we're almost finished with it.
1089 35         50 my $type = $ctl->[CTL_TYPE];
1090 35         46 my $arg;
1091              
1092 35 100 100     125 if ( $type eq '' || $type eq '!' || $type eq '+' ) {
      66        
1093 18 50 66     61 if ( defined $optarg ) {
    100          
1094 0 0       0 return (0) if $passthrough;
1095 0         0 warn ("Option ", $opt, " does not take an argument\n");
1096 0         0 $error++;
1097 0         0 undef $opt;
1098 0 0       0 undef $optarg if $bundling_values;
1099             }
1100             elsif ( $type eq '' || $type eq '+' ) {
1101             # Supply explicit value.
1102 15         21 $arg = 1;
1103             }
1104             else {
1105 3         10 $opt =~ s/^no-?//i; # strip NO prefix
1106 3         6 $arg = 0; # supply explicit value
1107             }
1108 18 50       55 unshift (@$argv, $starter.$rest) if defined $rest;
1109 18         101 return (1, $opt, $ctl, $starter, $arg);
1110             }
1111              
1112             # Get mandatory status and type info.
1113 17         27 my $mand = $ctl->[CTL_AMIN];
1114              
1115             # Check if there is an option argument available.
1116 17 50       30 if ( $gnu_compat ) {
1117 0         0 my $optargtype = 0; # none, 1 = empty, 2 = nonempty, 3 = aux
1118 0 0 0     0 if ( defined($optarg) ) {
    0          
1119 0 0       0 $optargtype = (length($optarg) == 0) ? 1 : 2;
1120             }
1121             elsif ( defined $rest || @$argv > 0 ) {
1122             # GNU getopt_long() does not accept the (optional)
1123             # argument to be passed to the option without = sign.
1124             # We do, since not doing so breaks existing scripts.
1125 0         0 $optargtype = 3;
1126             }
1127 0 0 0     0 if(($optargtype == 0) && !$mand) {
1128 0 0       0 if ( $type eq 'I' ) {
1129             # Fake incremental type.
1130 0         0 my @c = @$ctl;
1131 0         0 $c[CTL_TYPE] = '+';
1132 0         0 return (1, $opt, \@c, $starter, 1);
1133             }
1134 0 0       0 my $val
    0          
1135             = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT]
1136             : $type eq 's' ? ''
1137             : 0;
1138 0         0 return (1, $opt, $ctl, $starter, $val);
1139             }
1140 0 0       0 return (1, $opt, $ctl, $starter, $type eq 's' ? '' : 0)
    0          
1141             if $optargtype == 1; # --foo= -> return nothing
1142             }
1143              
1144             # Check if there is an option argument available.
1145 17 100 33     84 if ( defined $optarg
    50          
1146             ? ($optarg eq '')
1147             : !(defined $rest || @$argv > 0) ) {
1148             # Complain if this option needs an argument.
1149             # if ( $mand && !($type eq 's' ? defined($optarg) : 0) ) {
1150 0 0 0     0 if ( $mand || $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
1151 0 0       0 return (0) if $passthrough;
1152 0         0 warn ("Option ", $opt, " requires an argument\n");
1153 0         0 $error++;
1154 0         0 return (1, undef);
1155             }
1156 0 0       0 if ( $type eq 'I' ) {
1157             # Fake incremental type.
1158 0         0 my @c = @$ctl;
1159 0         0 $c[CTL_TYPE] = '+';
1160 0         0 return (1, $opt, \@c, $starter, 1);
1161             }
1162 0 0       0 return (1, $opt, $ctl, $starter,
    0          
1163             defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
1164             $type eq 's' ? '' : 0);
1165             }
1166              
1167             # Get (possibly optional) argument.
1168 17 100       64 $arg = (defined $rest ? $rest
    50          
1169             : (defined $optarg ? $optarg : shift (@$argv)));
1170              
1171             # Get key if this is a "name=value" pair for a hash option.
1172 17         31 my $key;
1173 17 50 33     46 if ($ctl->[CTL_DEST] == CTL_DEST_HASH && defined $arg) {
1174 0 0       0 ($key, $arg) = ($arg =~ /^([^=]*)=(.*)$/s) ? ($1, $2)
    0          
    0          
    0          
1175             : ($arg, defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
1176             ($mand ? undef : ($type eq 's' ? "" : 1)));
1177 0 0       0 if (! defined $arg) {
1178 0         0 warn ("Option $opt, key \"$key\", requires a value\n");
1179 0         0 $error++;
1180             # Push back.
1181 0 0       0 unshift (@$argv, $starter.$rest) if defined $rest;
1182 0         0 return (1, undef);
1183             }
1184             }
1185              
1186             #### Check if the argument is valid for this option ####
1187              
1188 17 50       35 my $key_valid = $ctl->[CTL_DEST] == CTL_DEST_HASH ? "[^=]+=" : "";
1189              
1190 17 100 33     51 if ( $type eq 's' ) { # string
    50 33        
    0          
1191             # A mandatory string takes anything.
1192 15 100       74 return (1, $opt, $ctl, $starter, $arg, $key) if $mand;
1193              
1194             # Same for optional string as a hash value
1195 1 50       5 return (1, $opt, $ctl, $starter, $arg, $key)
1196             if $ctl->[CTL_DEST] == CTL_DEST_HASH;
1197              
1198             # An optional string takes almost anything.
1199 1 50 33     6 return (1, $opt, $ctl, $starter, $arg, $key)
1200             if defined $optarg || defined $rest;
1201 1 50       3 return (1, $opt, $ctl, $starter, $arg, $key) if $arg eq "-"; # ??
1202              
1203             # Check for option or option list terminator.
1204 1 50 33     37 if ($arg eq $argend ||
1205             $arg =~ /^$prefix.+/) {
1206             # Push back.
1207 0         0 unshift (@$argv, $arg);
1208             # Supply empty value.
1209 0         0 $arg = '';
1210             }
1211             }
1212              
1213             elsif ( $type eq 'i' # numeric/integer
1214             || $type eq 'I' # numeric/integer w/ incr default
1215             || $type eq 'o' ) { # dec/oct/hex/bin value
1216              
1217 2 50       6 my $o_valid = $type eq 'o' ? PAT_XINT : PAT_INT;
1218              
1219 2 50 33     80 if ( $bundling && defined $rest
    50 33        
1220             && $rest =~ /^($key_valid)($o_valid)(.*)$/si ) {
1221 0         0 ($key, $arg, $rest) = ($1, $2, $+);
1222 0 0       0 chop($key) if $key;
1223 0 0 0     0 $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
1224 0 0 0     0 unshift (@$argv, $starter.$rest) if defined $rest && $rest ne '';
1225             }
1226             elsif ( $arg =~ /^$o_valid$/si ) {
1227 2         8 $arg =~ tr/_//d;
1228 2 50 33     16 $arg = ($type eq 'o' && $arg =~ /^0/) ? oct($arg) : 0+$arg;
1229             }
1230             else {
1231 0 0 0     0 if ( defined $optarg || $mand ) {
1232 0 0       0 if ( $passthrough ) {
1233 0 0       0 unshift (@$argv, defined $rest ? $starter.$rest : $arg)
    0          
1234             unless defined $optarg;
1235 0         0 return (0);
1236             }
1237 0 0       0 warn ("Value \"", $arg, "\" invalid for option ",
1238             $opt, " (",
1239             $type eq 'o' ? "extended " : '',
1240             "number expected)\n");
1241 0         0 $error++;
1242             # Push back.
1243 0 0       0 unshift (@$argv, $starter.$rest) if defined $rest;
1244 0         0 return (1, undef);
1245             }
1246             else {
1247             # Push back.
1248 0 0       0 unshift (@$argv, defined $rest ? $starter.$rest : $arg);
1249 0 0       0 if ( $type eq 'I' ) {
1250             # Fake incremental type.
1251 0         0 my @c = @$ctl;
1252 0         0 $c[CTL_TYPE] = '+';
1253 0         0 return (1, $opt, \@c, $starter, 1);
1254             }
1255             # Supply default value.
1256 0 0       0 $arg = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 0;
1257             }
1258             }
1259             }
1260              
1261             elsif ( $type eq 'f' ) { # real number, int is also ok
1262 0         0 my $o_valid = PAT_FLOAT;
1263 0 0 0     0 if ( $bundling && defined $rest &&
    0 0        
1264             $rest =~ /^($key_valid)($o_valid)(.*)$/s ) {
1265 0         0 $arg =~ tr/_//d;
1266 0         0 ($key, $arg, $rest) = ($1, $2, $+);
1267 0 0       0 chop($key) if $key;
1268 0 0 0     0 unshift (@$argv, $starter.$rest) if defined $rest && $rest ne '';
1269             }
1270             elsif ( $arg =~ /^$o_valid$/ ) {
1271 0         0 $arg =~ tr/_//d;
1272             }
1273             else {
1274 0 0 0     0 if ( defined $optarg || $mand ) {
1275 0 0       0 if ( $passthrough ) {
1276 0 0       0 unshift (@$argv, defined $rest ? $starter.$rest : $arg)
    0          
1277             unless defined $optarg;
1278 0         0 return (0);
1279             }
1280 0         0 warn ("Value \"", $arg, "\" invalid for option ",
1281             $opt, " (real number expected)\n");
1282 0         0 $error++;
1283             # Push back.
1284 0 0       0 unshift (@$argv, $starter.$rest) if defined $rest;
1285 0         0 return (1, undef);
1286             }
1287             else {
1288             # Push back.
1289 0 0       0 unshift (@$argv, defined $rest ? $starter.$rest : $arg);
1290             # Supply default value.
1291 0         0 $arg = 0.0;
1292             }
1293             }
1294             }
1295             else {
1296 0         0 die("Getopt::Long internal error (Can't happen)\n");
1297             }
1298 3         19 return (1, $opt, $ctl, $starter, $arg, $key);
1299             }
1300              
1301             sub ValidValue ($$$$$) {
1302 0     0 0 0 my ($ctl, $arg, $mand, $argend, $prefix) = @_;
1303              
1304 0 0       0 if ( $ctl->[CTL_DEST] == CTL_DEST_HASH ) {
1305 0 0       0 return 0 unless $arg =~ /[^=]+=(.*)/;
1306 0         0 $arg = $1;
1307             }
1308              
1309 0         0 my $type = $ctl->[CTL_TYPE];
1310              
1311 0 0 0     0 if ( $type eq 's' ) { # string
    0 0        
    0          
1312             # A mandatory string takes anything.
1313 0 0       0 return (1) if $mand;
1314              
1315 0 0       0 return (1) if $arg eq "-";
1316              
1317             # Check for option or option list terminator.
1318 0 0 0     0 return 0 if $arg eq $argend || $arg =~ /^$prefix.+/;
1319 0         0 return 1;
1320             }
1321              
1322             elsif ( $type eq 'i' # numeric/integer
1323             || $type eq 'I' # numeric/integer w/ incr default
1324             || $type eq 'o' ) { # dec/oct/hex/bin value
1325              
1326 0 0       0 my $o_valid = $type eq 'o' ? PAT_XINT : PAT_INT;
1327 0         0 return $arg =~ /^$o_valid$/si;
1328             }
1329              
1330             elsif ( $type eq 'f' ) { # real number, int is also ok
1331 0         0 my $o_valid = PAT_FLOAT;
1332 0         0 return $arg =~ /^$o_valid$/;
1333             }
1334 0         0 die("ValidValue: Cannot happen\n");
1335             }
1336              
1337             # Getopt::Long Configuration.
1338             sub Configure (@) {
1339 25     25   187 my (@options) = @_;
1340              
1341 25         85 my $prevconfig =
1342             [ $error, $debug, $major_version, $minor_version, $caller,
1343             $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
1344             $gnu_compat, $passthrough, $genprefix, $auto_version, $auto_help,
1345             $longprefix, $bundling_values ];
1346              
1347 25 100       61 if ( ref($options[0]) eq 'ARRAY' ) {
1348             ( $error, $debug, $major_version, $minor_version, $caller,
1349             $autoabbrev, $getopt_compat, $ignorecase, $bundling, $order,
1350             $gnu_compat, $passthrough, $genprefix, $auto_version, $auto_help,
1351 6         7 $longprefix, $bundling_values ) = @{shift(@options)};
  6         18  
1352             }
1353              
1354 25         30 my $opt;
1355 25         40 foreach $opt ( @options ) {
1356 26         46 my $try = lc ($opt);
1357 26         35 my $action = 1;
1358 26 100       58 if ( $try =~ /^no_?(.*)$/s ) {
1359 6         9 $action = 0;
1360 6         16 $try = $+;
1361             }
1362 26 100 66     334 if ( ($try eq 'default' or $try eq 'defaults') && $action ) {
    50 66        
    50 33        
    50 33        
    50 66        
    50 66        
    50 66        
    50 33        
    100 66        
    100 33        
    100          
    50          
    50          
    100          
    50          
    100          
    50          
    100          
    50          
    0          
1363 7         13 ConfigDefaults ();
1364             }
1365             elsif ( ($try eq 'posix_default' or $try eq 'posix_defaults') ) {
1366 0         0 local $ENV{POSIXLY_CORRECT};
1367 0 0       0 $ENV{POSIXLY_CORRECT} = 1 if $action;
1368 0         0 ConfigDefaults ();
1369             }
1370             elsif ( $try eq 'auto_abbrev' or $try eq 'autoabbrev' ) {
1371 0         0 $autoabbrev = $action;
1372             }
1373             elsif ( $try eq 'getopt_compat' ) {
1374 0         0 $getopt_compat = $action;
1375 0 0       0 $genprefix = $action ? "(--|-|\\+)" : "(--|-)";
1376             }
1377             elsif ( $try eq 'gnu_getopt' ) {
1378 0 0       0 if ( $action ) {
1379 0         0 $gnu_compat = 1;
1380 0         0 $bundling = 1;
1381 0         0 $getopt_compat = 0;
1382 0         0 $genprefix = "(--|-)";
1383 0         0 $order = $PERMUTE;
1384 0         0 $bundling_values = 0;
1385             }
1386             }
1387             elsif ( $try eq 'gnu_compat' ) {
1388 0         0 $gnu_compat = $action;
1389 0         0 $bundling = 0;
1390 0         0 $bundling_values = 1;
1391             }
1392             elsif ( $try =~ /^(auto_?)?version$/ ) {
1393 0         0 $auto_version = $action;
1394             }
1395             elsif ( $try =~ /^(auto_?)?help$/ ) {
1396 0         0 $auto_help = $action;
1397             }
1398             elsif ( $try eq 'ignorecase' or $try eq 'ignore_case' ) {
1399 6         13 $ignorecase = $action;
1400             }
1401             elsif ( $try eq 'ignorecase_always' or $try eq 'ignore_case_always' ) {
1402 2 50       3 $ignorecase = $action ? 2 : 0;
1403             }
1404             elsif ( $try eq 'bundling' ) {
1405 2         3 $bundling = $action;
1406 2 50       5 $bundling_values = 0 if $action;
1407             }
1408             elsif ( $try eq 'bundling_override' ) {
1409 0 0       0 $bundling = $action ? 2 : 0;
1410 0 0       0 $bundling_values = 0 if $action;
1411             }
1412             elsif ( $try eq 'bundling_values' ) {
1413 0         0 $bundling_values = $action;
1414 0 0       0 $bundling = 0 if $action;
1415             }
1416             elsif ( $try eq 'require_order' ) {
1417 1 50       3 $order = $action ? $REQUIRE_ORDER : $PERMUTE;
1418             }
1419             elsif ( $try eq 'permute' ) {
1420 0 0       0 $order = $action ? $PERMUTE : $REQUIRE_ORDER;
1421             }
1422             elsif ( $try eq 'pass_through' or $try eq 'passthrough' ) {
1423 2         4 $passthrough = $action;
1424             }
1425             elsif ( $try =~ /^prefix=(.+)$/ && $action ) {
1426 0         0 $genprefix = $1;
1427             # Turn into regexp. Needs to be parenthesized!
1428 0         0 $genprefix = "(" . quotemeta($genprefix) . ")";
1429 0         0 eval { '' =~ /$genprefix/; };
  0         0  
1430 0 0       0 die("Getopt::Long: invalid pattern \"$genprefix\"\n") if $@;
1431             }
1432             elsif ( $try =~ /^prefix_pattern=(.+)$/ && $action ) {
1433 3         9 $genprefix = $1;
1434             # Parenthesize if needed.
1435 3 50       10 $genprefix = "(" . $genprefix . ")"
1436             unless $genprefix =~ /^\(.*\)$/;
1437 3         5 eval { '' =~ m"$genprefix"; };
  3         23  
1438 3 50       7 die("Getopt::Long: invalid pattern \"$genprefix\"\n") if $@;
1439             }
1440             elsif ( $try =~ /^long_prefix_pattern=(.+)$/ && $action ) {
1441 3         8 $longprefix = $1;
1442             # Parenthesize if needed.
1443 3 50       9 $longprefix = "(" . $longprefix . ")"
1444             unless $longprefix =~ /^\(.*\)$/;
1445 3         5 eval { '' =~ m"$longprefix"; };
  3         37  
1446 3 50       10 die("Getopt::Long: invalid long prefix pattern \"$longprefix\"\n") if $@;
1447             }
1448             elsif ( $try eq 'debug' ) {
1449 0         0 $debug = $action;
1450             }
1451             else {
1452 0         0 die("Getopt::Long: unknown or erroneous config parameter \"$opt\"\n")
1453             }
1454             }
1455 25         4423 $prevconfig;
1456             }
1457              
1458             # Deprecated name.
1459             sub config (@) {
1460 0     0 0 0 Configure (@_);
1461             }
1462              
1463             # Issue a standard message for --version.
1464             #
1465             # The arguments are mostly the same as for Pod::Usage::pod2usage:
1466             #
1467             # - a number (exit value)
1468             # - a string (lead in message)
1469             # - a hash with options. See Pod::Usage for details.
1470             #
1471             sub VersionMessage(@) {
1472             # Massage args.
1473 0     0   0 my $pa = setup_pa_args("version", @_);
1474              
1475 0         0 my $v = $main::VERSION;
1476             my $fh = $pa->{-output} ||
1477 0   0     0 ( ($pa->{-exitval} eq "NOEXIT" || $pa->{-exitval} < 2) ? \*STDOUT : \*STDERR );
1478              
1479 0 0       0 print $fh (defined($pa->{-message}) ? $pa->{-message} : (),
    0          
    0          
    0          
1480             $0, defined $v ? " version $v" : (),
1481             "\n",
1482             "(", __PACKAGE__, "::", "GetOptions",
1483             " version ",
1484             defined($Getopt::Long::VERSION_STRING)
1485             ? $Getopt::Long::VERSION_STRING : $VERSION, ";",
1486             " Perl version ",
1487             $] >= 5.006 ? sprintf("%vd", $^V) : $],
1488             ")\n");
1489 0 0       0 exit($pa->{-exitval}) unless $pa->{-exitval} eq "NOEXIT";
1490             }
1491              
1492             # Issue a standard message for --help.
1493             #
1494             # The arguments are the same as for Pod::Usage::pod2usage:
1495             #
1496             # - a number (exit value)
1497             # - a string (lead in message)
1498             # - a hash with options. See Pod::Usage for details.
1499             #
1500             sub HelpMessage(@) {
1501 0 0   0   0 eval {
1502 0         0 require Pod::Usage;
1503 0         0 import Pod::Usage;
1504 0         0 1;
1505             } || die("Cannot provide help: cannot load Pod::Usage\n");
1506              
1507             # Note that pod2usage will issue a warning if -exitval => NOEXIT.
1508 0         0 pod2usage(setup_pa_args("help", @_));
1509              
1510             }
1511              
1512             # Helper routine to set up a normalized hash ref to be used as
1513             # argument to pod2usage.
1514             sub setup_pa_args($@) {
1515 0     0 0 0 my $tag = shift; # who's calling
1516              
1517             # If called by direct binding to an option, it will get the option
1518             # name and value as arguments. Remove these, if so.
1519 0 0 0     0 @_ = () if @_ == 2 && $_[0] eq $tag;
1520              
1521 0         0 my $pa;
1522 0 0       0 if ( @_ > 1 ) {
1523 0         0 $pa = { @_ };
1524             }
1525             else {
1526 0   0     0 $pa = shift || {};
1527             }
1528              
1529             # At this point, $pa can be a number (exit value), string
1530             # (message) or hash with options.
1531              
1532 0 0       0 if ( UNIVERSAL::isa($pa, 'HASH') ) {
    0          
1533             # Get rid of -msg vs. -message ambiguity.
1534 0   0     0 $pa->{-message} //= delete($pa->{-msg});
1535             }
1536             elsif ( $pa =~ /^-?\d+$/ ) {
1537 0         0 $pa = { -exitval => $pa };
1538             }
1539             else {
1540 0         0 $pa = { -message => $pa };
1541             }
1542              
1543             # These are _our_ defaults.
1544 0 0       0 $pa->{-verbose} = 0 unless exists($pa->{-verbose});
1545 0 0       0 $pa->{-exitval} = 0 unless exists($pa->{-exitval});
1546 0         0 $pa;
1547             }
1548              
1549             # Sneak way to know what version the user requested.
1550             sub VERSION {
1551 0 0   0 0 0 $requested_version = $_[1] if @_ > 1;
1552 0         0 shift->SUPER::VERSION(@_);
1553             }
1554              
1555             package Getopt::Long::CallBack;
1556              
1557             sub new {
1558 1     1   8 my ($pkg, %atts) = @_;
1559 1         23 bless { %atts }, $pkg;
1560             }
1561              
1562             sub name {
1563 0     0     my $self = shift;
1564 0           ''.$self->{name};
1565             }
1566              
1567             sub given {
1568 0     0     my $self = shift;
1569 0           $self->{given};
1570             }
1571              
1572             use overload
1573             # Treat this object as an ordinary string for legacy API.
1574 6         37 '""' => \&name,
1575 6     6   5177 fallback => 1;
  6         4530  
1576              
1577             1;
1578              
1579             ################ Documentation ################
1580              
1581             =head1 NAME
1582              
1583             Getopt::Long - Extended processing of command line options
1584              
1585             =head1 SYNOPSIS
1586              
1587             use Getopt::Long;
1588             my $data = "file.dat";
1589             my $length = 24;
1590             my $verbose;
1591             GetOptions ("length=i" => \$length, # numeric
1592             "file=s" => \$data, # string
1593             "verbose" => \$verbose) # flag
1594             or die("Error in command line arguments\n");
1595              
1596             =head1 DESCRIPTION
1597              
1598             The Getopt::Long module implements an extended getopt function called
1599             GetOptions(). It parses the command line from C<@ARGV>, recognizing
1600             and removing specified options and their possible values.
1601              
1602             This function adheres to the POSIX syntax for command
1603             line options, with GNU extensions. In general, this means that options
1604             have long names instead of single letters, and are introduced with a
1605             double dash "--". Support for bundling of command line options, as was
1606             the case with the more traditional single-letter approach, is provided
1607             but not enabled by default.
1608              
1609             =head1 Command Line Options, an Introduction
1610              
1611             Command line operated programs traditionally take their arguments from
1612             the command line, for example filenames or other information that the
1613             program needs to know. Besides arguments, these programs often take
1614             command line I as well. Options are not necessary for the
1615             program to work, hence the name 'option', but are used to modify its
1616             default behaviour. For example, a program could do its job quietly,
1617             but with a suitable option it could provide verbose information about
1618             what it did.
1619              
1620             Command line options come in several flavours. Historically, they are
1621             preceded by a single dash C<->, and consist of a single letter.
1622              
1623             -l -a -c
1624              
1625             Usually, these single-character options can be bundled:
1626              
1627             -lac
1628              
1629             Options can have values, the value is placed after the option
1630             character. Sometimes with whitespace in between, sometimes not:
1631              
1632             -s 24 -s24
1633              
1634             Due to the very cryptic nature of these options, another style was
1635             developed that used long names. So instead of a cryptic C<-l> one
1636             could use the more descriptive C<--long>. To distinguish between a
1637             bundle of single-character options and a long one, two dashes are used
1638             to precede the option name. Early implementations of long options used
1639             a plus C<+> instead. Also, option values could be specified either
1640             like
1641              
1642             --size=24
1643              
1644             or
1645              
1646             --size 24
1647              
1648             The C<+> form is now obsolete and strongly deprecated.
1649              
1650             =head1 Getting Started with Getopt::Long
1651              
1652             Getopt::Long is the Perl5 successor of C. This was the
1653             first Perl module that provided support for handling the new style of
1654             command line options, in particular long option names, hence the Perl5
1655             name Getopt::Long. This module also supports single-character options
1656             and bundling.
1657              
1658             To use Getopt::Long from a Perl program, you must include the
1659             following line in your Perl program:
1660              
1661             use Getopt::Long;
1662              
1663             This will load the core of the Getopt::Long module and prepare your
1664             program for using it. Most of the actual Getopt::Long code is not
1665             loaded until you really call one of its functions.
1666              
1667             In the default configuration, options names may be abbreviated to
1668             uniqueness, case does not matter, and a single dash is sufficient,
1669             even for long option names. Also, options may be placed between
1670             non-option arguments. See L for more
1671             details on how to configure Getopt::Long.
1672              
1673             =head2 Simple options
1674              
1675             The most simple options are the ones that take no values. Their mere
1676             presence on the command line enables the option. Popular examples are:
1677              
1678             --all --verbose --quiet --debug
1679              
1680             Handling simple options is straightforward:
1681              
1682             my $verbose = ''; # option variable with default value (false)
1683             my $all = ''; # option variable with default value (false)
1684             GetOptions ('verbose' => \$verbose, 'all' => \$all);
1685              
1686             The call to GetOptions() parses the command line arguments that are
1687             present in C<@ARGV> and sets the option variable to the value C<1> if
1688             the option did occur on the command line. Otherwise, the option
1689             variable is not touched. Setting the option value to true is often
1690             called I the option.
1691              
1692             The option name as specified to the GetOptions() function is called
1693             the option I. Later we'll see that this specification
1694             can contain more than just the option name. The reference to the
1695             variable is called the option I.
1696              
1697             GetOptions() will return a true value if the command line could be
1698             processed successfully. Otherwise, it will write error messages using
1699             die() and warn(), and return a false result.
1700              
1701             =head2 A little bit less simple options
1702              
1703             Getopt::Long supports two useful variants of simple options:
1704             I options and I options.
1705              
1706             A negatable option is specified with an exclamation mark C after the
1707             option name:
1708              
1709             my $verbose = ''; # option variable with default value (false)
1710             GetOptions ('verbose!' => \$verbose);
1711              
1712             Now, using C<--verbose> on the command line will enable C<$verbose>,
1713             as expected. But it is also allowed to use C<--noverbose>, which will
1714             disable C<$verbose> by setting its value to C<0>. Using a suitable
1715             default value, the program can find out whether C<$verbose> is false
1716             by default, or disabled by using C<--noverbose>.
1717              
1718             (If both C<--verbose> and C<--noverbose> are given, whichever is given
1719             last takes precedence.)
1720              
1721             An incremental option is specified with a plus C<+> after the
1722             option name:
1723              
1724             my $verbose = ''; # option variable with default value (false)
1725             GetOptions ('verbose+' => \$verbose);
1726              
1727             Using C<--verbose> on the command line will increment the value of
1728             C<$verbose>. This way the program can keep track of how many times the
1729             option occurred on the command line. For example, each occurrence of
1730             C<--verbose> could increase the verbosity level of the program.
1731              
1732             =head2 Mixing command line option with other arguments
1733              
1734             Usually programs take command line options as well as other arguments,
1735             for example, file names. It is good practice to always specify the
1736             options first, and the other arguments last. Getopt::Long will,
1737             however, allow the options and arguments to be mixed and 'filter out'
1738             all the options before passing the rest of the arguments to the
1739             program. To stop Getopt::Long from processing further arguments,
1740             insert a double dash C<--> on the command line:
1741              
1742             --size 24 -- --all
1743              
1744             In this example, C<--all> will I be treated as an option, but
1745             passed to the program unharmed, in C<@ARGV>.
1746              
1747             =head2 Options with values
1748              
1749             For options that take values it must be specified whether the option
1750             value is required or not, and what kind of value the option expects.
1751              
1752             Three kinds of values are supported: integer numbers, floating point
1753             numbers, and strings.
1754              
1755             If the option value is required, Getopt::Long will take the
1756             command line argument that follows the option and assign this to the
1757             option variable. If, however, the option value is specified as
1758             optional, this will only be done if that value does not look like a
1759             valid command line option itself.
1760              
1761             my $tag = ''; # option variable with default value
1762             GetOptions ('tag=s' => \$tag);
1763              
1764             In the option specification, the option name is followed by an equals
1765             sign C<=> and the letter C. The equals sign indicates that this
1766             option requires a value. The letter C indicates that this value is
1767             an arbitrary string. Other possible value types are C for integer
1768             values, and C for floating point values. Using a colon C<:> instead
1769             of the equals sign indicates that the option value is optional. In
1770             this case, if no suitable value is supplied, string valued options get
1771             an empty string C<''> assigned, while numeric options are set to C<0>.
1772              
1773             (If the same option appears more than once on the command line, the
1774             last given value is used. If you want to take all the values, see
1775             below.)
1776              
1777             =head2 Options with multiple values
1778              
1779             Options sometimes take several values. For example, a program could
1780             use multiple directories to search for library files:
1781              
1782             --library lib/stdlib --library lib/extlib
1783              
1784             To accomplish this behaviour, simply specify an array reference as the
1785             destination for the option:
1786              
1787             GetOptions ("library=s" => \@libfiles);
1788              
1789             Alternatively, you can specify that the option can have multiple
1790             values by adding a "@", and pass a reference to a scalar as the
1791             destination:
1792              
1793             GetOptions ("library=s@" => \$libfiles);
1794              
1795             Used with the example above, C<@libfiles> c.q. C<@$libfiles> would
1796             contain two strings upon completion: C<"lib/stdlib"> and
1797             C<"lib/extlib">, in that order. It is also possible to specify that
1798             only integer or floating point numbers are acceptable values.
1799              
1800             Often it is useful to allow comma-separated lists of values as well as
1801             multiple occurrences of the options. This is easy using Perl's split()
1802             and join() operators:
1803              
1804             GetOptions ("library=s" => \@libfiles);
1805             @libfiles = split(/,/,join(',',@libfiles));
1806              
1807             Of course, it is important to choose the right separator string for
1808             each purpose.
1809              
1810             Warning: What follows is an experimental feature.
1811              
1812             Options can take multiple values at once, for example
1813              
1814             --coordinates 52.2 16.4 --rgbcolor 255 255 149
1815              
1816             This can be accomplished by adding a repeat specifier to the option
1817             specification. Repeat specifiers are very similar to the C<{...}>
1818             repeat specifiers that can be used with regular expression patterns.
1819             For example, the above command line would be handled as follows:
1820              
1821             GetOptions('coordinates=f{2}' => \@coor, 'rgbcolor=i{3}' => \@color);
1822              
1823             The destination for the option must be an array or array reference.
1824              
1825             It is also possible to specify the minimal and maximal number of
1826             arguments an option takes. C indicates an option that
1827             takes at least two and at most 4 arguments. C indicates one
1828             or more values; C indicates zero or more option values.
1829              
1830             =head2 Options with hash values
1831              
1832             If the option destination is a reference to a hash, the option will
1833             take, as value, strings of the form IC<=>I. The value will
1834             be stored with the specified key in the hash.
1835              
1836             GetOptions ("define=s" => \%defines);
1837              
1838             Alternatively you can use:
1839              
1840             GetOptions ("define=s%" => \$defines);
1841              
1842             When used with command line options:
1843              
1844             --define os=linux --define vendor=redhat
1845              
1846             the hash C<%defines> (or C<%$defines>) will contain two keys, C<"os">
1847             with value C<"linux"> and C<"vendor"> with value C<"redhat">. It is
1848             also possible to specify that only integer or floating point numbers
1849             are acceptable values. The keys are always taken to be strings.
1850              
1851             =head2 User-defined subroutines to handle options
1852              
1853             Ultimate control over what should be done when (actually: each time)
1854             an option is encountered on the command line can be achieved by
1855             designating a reference to a subroutine (or an anonymous subroutine)
1856             as the option destination. When GetOptions() encounters the option, it
1857             will call the subroutine with two or three arguments. The first
1858             argument is the name of the option. (Actually, it is an object that
1859             stringifies to the name of the option.) For a scalar or array destination,
1860             the second argument is the value to be stored. For a hash destination,
1861             the second argument is the key to the hash, and the third argument
1862             the value to be stored. It is up to the subroutine to store the value,
1863             or do whatever it thinks is appropriate.
1864              
1865             A trivial application of this mechanism is to implement options that
1866             are related to each other. For example:
1867              
1868             my $verbose = ''; # option variable with default value (false)
1869             GetOptions ('verbose' => \$verbose,
1870             'quiet' => sub { $verbose = 0 });
1871              
1872             Here C<--verbose> and C<--quiet> control the same variable
1873             C<$verbose>, but with opposite values.
1874              
1875             If the subroutine needs to signal an error, it should call die() with
1876             the desired error message as its argument. GetOptions() will catch the
1877             die(), issue the error message, and record that an error result must
1878             be returned upon completion.
1879              
1880             If the text of the error message starts with an exclamation mark C
1881             it is interpreted specially by GetOptions(). There is currently one
1882             special command implemented: C will cause GetOptions()
1883             to stop processing options, as if it encountered a double dash C<-->.
1884              
1885             Here is an example of how to access the option name and value from within
1886             a subroutine:
1887              
1888             GetOptions ('opt=i' => \&handler);
1889             sub handler {
1890             my ($opt_name, $opt_value) = @_;
1891             print("Option name is $opt_name and value is $opt_value\n");
1892             }
1893              
1894             =head2 Options with multiple names
1895              
1896             Often it is user friendly to supply alternate mnemonic names for
1897             options. For example C<--height> could be an alternate name for
1898             C<--length>. Alternate names can be included in the option
1899             specification, separated by vertical bar C<|> characters. To implement
1900             the above example:
1901              
1902             GetOptions ('length|height=f' => \$length);
1903              
1904             The first name is called the I name, the other names are
1905             called I. When using a hash to store options, the key will
1906             always be the primary name.
1907              
1908             Multiple alternate names are possible.
1909              
1910             =head2 Case and abbreviations
1911              
1912             Without additional configuration, GetOptions() will ignore the case of
1913             option names, and allow the options to be abbreviated to uniqueness.
1914              
1915             GetOptions ('length|height=f' => \$length, "head" => \$head);
1916              
1917             This call will allow C<--l> and C<--L> for the length option, but
1918             requires a least C<--hea> and C<--hei> for the head and height options.
1919              
1920             =head2 Summary of Option Specifications
1921              
1922             Each option specifier consists of two parts: the name specification
1923             and the argument specification.
1924              
1925             The name specification contains the name of the option, optionally
1926             followed by a list of alternative names separated by vertical bar
1927             characters.
1928              
1929             length option name is "length"
1930             length|size|l name is "length", aliases are "size" and "l"
1931              
1932             The argument specification is optional. If omitted, the option is
1933             considered boolean, a value of 1 will be assigned when the option is
1934             used on the command line.
1935              
1936             The argument specification can be
1937              
1938             =over 4
1939              
1940             =item !
1941              
1942             The option does not take an argument and may be negated by prefixing
1943             it with "no" or "no-". E.g. C<"foo!"> will allow C<--foo> (a value of
1944             1 will be assigned) as well as C<--nofoo> and C<--no-foo> (a value of
1945             0 will be assigned). If the option has aliases, this applies to the
1946             aliases as well.
1947              
1948             Using negation on a single letter option when bundling is in effect is
1949             pointless and will result in a warning.
1950              
1951             =item +
1952              
1953             The option does not take an argument and will be incremented by 1
1954             every time it appears on the command line. E.g. C<"more+">, when used
1955             with C<--more --more --more>, will increment the value three times,
1956             resulting in a value of 3 (provided it was 0 or undefined at first).
1957              
1958             The C<+> specifier is ignored if the option destination is not a scalar.
1959              
1960             =item = I [ I ] [ I ]
1961              
1962             The option requires an argument of the given type. Supported types
1963             are:
1964              
1965             =over 4
1966              
1967             =item s
1968              
1969             String. An arbitrary sequence of characters. It is valid for the
1970             argument to start with C<-> or C<-->.
1971              
1972             =item i
1973              
1974             Integer. An optional leading plus or minus sign, followed by a
1975             sequence of digits.
1976              
1977             =item o
1978              
1979             Extended integer, Perl style. This can be either an optional leading
1980             plus or minus sign, followed by a sequence of digits, or an octal
1981             string (a zero, optionally followed by '0', '1', .. '7'), or a
1982             hexadecimal string (C<0x> followed by '0' .. '9', 'a' .. 'f', case
1983             insensitive), or a binary string (C<0b> followed by a series of '0'
1984             and '1').
1985              
1986             =item f
1987              
1988             Real number. For example C<3.14>, C<-6.23E24> and so on.
1989              
1990             =back
1991              
1992             The I can be C<@> or C<%> to specify that the option is
1993             list or a hash valued. This is only needed when the destination for
1994             the option value is not otherwise specified. It should be omitted when
1995             not needed.
1996              
1997             The I specifies the number of values this option takes per
1998             occurrence on the command line. It has the format C<{> [ I ] [ C<,> [ I ] ] C<}>.
1999              
2000             I denotes the minimal number of arguments. It defaults to 1 for
2001             options with C<=> and to 0 for options with C<:>, see below. Note that
2002             I overrules the C<=> / C<:> semantics.
2003              
2004             I denotes the maximum number of arguments. It must be at least
2005             I. If I is omitted, I, there is no
2006             upper bound to the number of argument values taken.
2007              
2008             =item : I [ I ]
2009              
2010             Like C<=>, but designates the argument as optional.
2011             If omitted, an empty string will be assigned to string values options,
2012             and the value zero to numeric options.
2013              
2014             Note that if a string argument starts with C<-> or C<-->, it will be
2015             considered an option on itself.
2016              
2017             =item : I [ I ]
2018              
2019             Like C<:i>, but if the value is omitted, the I will be assigned.
2020              
2021             =item : + [ I ]
2022              
2023             Like C<:i>, but if the value is omitted, the current value for the
2024             option will be incremented.
2025              
2026             =back
2027              
2028             =head1 Advanced Possibilities
2029              
2030             =head2 Object oriented interface
2031              
2032             Getopt::Long can be used in an object oriented way as well:
2033              
2034             use Getopt::Long;
2035             $p = Getopt::Long::Parser->new;
2036             $p->configure(...configuration options...);
2037             if ($p->getoptions(...options descriptions...)) ...
2038             if ($p->getoptionsfromarray( \@array, ...options descriptions...)) ...
2039              
2040             Configuration options can be passed to the constructor:
2041              
2042             $p = new Getopt::Long::Parser
2043             config => [...configuration options...];
2044              
2045             =head2 Callback object
2046              
2047             In version 2.37 the first argument to the callback function was
2048             changed from string to object. This was done to make room for
2049             extensions and more detailed control. The object stringifies to the
2050             option name so this change should not introduce compatibility
2051             problems.
2052              
2053             The callback object has the following methods:
2054              
2055             =over
2056              
2057             =item name
2058              
2059             The name of the option, unabbreviated. For an option with multiple
2060             names it return the first (canonical) name.
2061              
2062             =item given
2063              
2064             The name of the option as actually used, unabbreveated.
2065              
2066             =back
2067              
2068             =head2 Thread Safety
2069              
2070             Getopt::Long is thread safe when using ithreads as of Perl 5.8. It is
2071             I thread safe when using the older (experimental and now
2072             obsolete) threads implementation that was added to Perl 5.005.
2073              
2074             =head2 Documentation and help texts
2075              
2076             Getopt::Long encourages the use of Pod::Usage to produce help
2077             messages. For example:
2078              
2079             use Getopt::Long;
2080             use Pod::Usage;
2081              
2082             my $man = 0;
2083             my $help = 0;
2084              
2085             GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
2086             pod2usage(1) if $help;
2087             pod2usage(-exitval => 0, -verbose => 2) if $man;
2088              
2089             __END__
2090              
2091             =head1 NAME
2092              
2093             sample - Using Getopt::Long and Pod::Usage
2094              
2095             =head1 SYNOPSIS
2096              
2097             sample [options] [file ...]
2098              
2099             Options:
2100             -help brief help message
2101             -man full documentation
2102              
2103             =head1 OPTIONS
2104              
2105             =over 8
2106              
2107             =item B<-help>
2108              
2109             Print a brief help message and exits.
2110              
2111             =item B<-man>
2112              
2113             Prints the manual page and exits.
2114              
2115             =back
2116              
2117             =head1 DESCRIPTION
2118              
2119             B will read the given input file(s) and do something
2120             useful with the contents thereof.
2121              
2122             =cut
2123              
2124             See L for details.
2125              
2126             =head2 Parsing options from an arbitrary array
2127              
2128             By default, GetOptions parses the options that are present in the
2129             global array C<@ARGV>. A special entry C can be
2130             used to parse options from an arbitrary array.
2131              
2132             use Getopt::Long qw(GetOptionsFromArray);
2133             $ret = GetOptionsFromArray(\@myopts, ...);
2134              
2135             When used like this, options and their possible values are removed
2136             from C<@myopts>, the global C<@ARGV> is not touched at all.
2137              
2138             The following two calls behave identically:
2139              
2140             $ret = GetOptions( ... );
2141             $ret = GetOptionsFromArray(\@ARGV, ... );
2142              
2143             This also means that a first argument hash reference now becomes the
2144             second argument:
2145              
2146             $ret = GetOptions(\%opts, ... );
2147             $ret = GetOptionsFromArray(\@ARGV, \%opts, ... );
2148              
2149             =head2 Parsing options from an arbitrary string
2150              
2151             A special entry C can be used to parse options
2152             from an arbitrary string.
2153              
2154             use Getopt::Long qw(GetOptionsFromString);
2155             $ret = GetOptionsFromString($string, ...);
2156              
2157             The contents of the string are split into arguments using a call to
2158             C. As with C, the
2159             global C<@ARGV> is not touched.
2160              
2161             It is possible that, upon completion, not all arguments in the string
2162             have been processed. C will, when called in list
2163             context, return both the return status and an array reference to any
2164             remaining arguments:
2165              
2166             ($ret, $args) = GetOptionsFromString($string, ... );
2167              
2168             If any arguments remain, and C was not called in
2169             list context, a message will be given and C will
2170             return failure.
2171              
2172             As with GetOptionsFromArray, a first argument hash reference now
2173             becomes the second argument. See the next section.
2174              
2175             =head2 Storing options values in a hash
2176              
2177             Sometimes, for example when there are a lot of options, having a
2178             separate variable for each of them can be cumbersome. GetOptions()
2179             supports, as an alternative mechanism, storing options values in a
2180             hash.
2181              
2182             To obtain this, a reference to a hash must be passed I
2183             argument> to GetOptions(). For each option that is specified on the
2184             command line, the option value will be stored in the hash with the
2185             option name as key. Options that are not actually used on the command
2186             line will not be put in the hash, on other words,
2187             C (or defined()) can be used to test if an option
2188             was used. The drawback is that warnings will be issued if the program
2189             runs under C and uses C<$h{option}> without testing with
2190             exists() or defined() first.
2191              
2192             my %h = ();
2193             GetOptions (\%h, 'length=i'); # will store in $h{length}
2194              
2195             For options that take list or hash values, it is necessary to indicate
2196             this by appending an C<@> or C<%> sign after the type:
2197              
2198             GetOptions (\%h, 'colours=s@'); # will push to @{$h{colours}}
2199              
2200             To make things more complicated, the hash may contain references to
2201             the actual destinations, for example:
2202              
2203             my $len = 0;
2204             my %h = ('length' => \$len);
2205             GetOptions (\%h, 'length=i'); # will store in $len
2206              
2207             This example is fully equivalent with:
2208              
2209             my $len = 0;
2210             GetOptions ('length=i' => \$len); # will store in $len
2211              
2212             Any mixture is possible. For example, the most frequently used options
2213             could be stored in variables while all other options get stored in the
2214             hash:
2215              
2216             my $verbose = 0; # frequently referred
2217             my $debug = 0; # frequently referred
2218             my %h = ('verbose' => \$verbose, 'debug' => \$debug);
2219             GetOptions (\%h, 'verbose', 'debug', 'filter', 'size=i');
2220             if ( $verbose ) { ... }
2221             if ( exists $h{filter} ) { ... option 'filter' was specified ... }
2222              
2223             =head2 Bundling
2224              
2225             With bundling it is possible to set several single-character options
2226             at once. For example if C, C and C are all valid options,
2227              
2228             -vax
2229              
2230             will set all three.
2231              
2232             Getopt::Long supports three styles of bundling. To enable bundling, a
2233             call to Getopt::Long::Configure is required.
2234              
2235             The simplest style of bundling can be enabled with:
2236              
2237             Getopt::Long::Configure ("bundling");
2238              
2239             Configured this way, single-character options can be bundled but long
2240             options (and any of their auto-abbreviated shortened forms) B
2241             always start with a double dash C<--> to avoid ambiguity. For example,
2242             when C, C, C and C are all valid options,
2243              
2244             -vax
2245              
2246             will set C, C and C, but
2247              
2248             --vax
2249              
2250             will set C.
2251              
2252             The second style of bundling lifts this restriction. It can be enabled
2253             with:
2254              
2255             Getopt::Long::Configure ("bundling_override");
2256              
2257             Now, C<-vax> will set the option C.
2258              
2259             In all of the above cases, option values may be inserted in the
2260             bundle. For example:
2261              
2262             -h24w80
2263              
2264             is equivalent to
2265              
2266             -h 24 -w 80
2267              
2268             A third style of bundling allows only values to be bundled with
2269             options. It can be enabled with:
2270              
2271             Getopt::Long::Configure ("bundling_values");
2272              
2273             Now, C<-h24> will set the option C to C<24>, but option bundles
2274             like C<-vxa> and C<-h24w80> are flagged as errors.
2275              
2276             Enabling C will disable the other two styles of
2277             bundling.
2278              
2279             When configured for bundling, single-character options are matched
2280             case sensitive while long options are matched case insensitive. To
2281             have the single-character options matched case insensitive as well,
2282             use:
2283              
2284             Getopt::Long::Configure ("bundling", "ignorecase_always");
2285              
2286             It goes without saying that bundling can be quite confusing.
2287              
2288             =head2 The lonesome dash
2289              
2290             Normally, a lone dash C<-> on the command line will not be considered
2291             an option. Option processing will terminate (unless "permute" is
2292             configured) and the dash will be left in C<@ARGV>.
2293              
2294             It is possible to get special treatment for a lone dash. This can be
2295             achieved by adding an option specification with an empty name, for
2296             example:
2297              
2298             GetOptions ('' => \$stdio);
2299              
2300             A lone dash on the command line will now be a legal option, and using
2301             it will set variable C<$stdio>.
2302              
2303             =head2 Argument callback
2304              
2305             A special option 'name' C<< <> >> can be used to designate a subroutine
2306             to handle non-option arguments. When GetOptions() encounters an
2307             argument that does not look like an option, it will immediately call this
2308             subroutine and passes it one parameter: the argument name.
2309              
2310             For example:
2311              
2312             my $width = 80;
2313             sub process { ... }
2314             GetOptions ('width=i' => \$width, '<>' => \&process);
2315              
2316             When applied to the following command line:
2317              
2318             arg1 --width=72 arg2 --width=60 arg3
2319              
2320             This will call
2321             C while C<$width> is C<80>,
2322             C while C<$width> is C<72>, and
2323             C while C<$width> is C<60>.
2324              
2325             This feature requires configuration option B, see section
2326             L.
2327              
2328             =head1 Configuring Getopt::Long
2329              
2330             Getopt::Long can be configured by calling subroutine
2331             Getopt::Long::Configure(). This subroutine takes a list of quoted
2332             strings, each specifying a configuration option to be enabled, e.g.
2333             C. To disable, prefix with C or C, e.g.
2334             C. Case does not matter. Multiple calls to Configure()
2335             are possible.
2336              
2337             Alternatively, as of version 2.24, the configuration options may be
2338             passed together with the C statement:
2339              
2340             use Getopt::Long qw(:config no_ignore_case bundling);
2341              
2342             The following options are available:
2343              
2344             =over 12
2345              
2346             =item default
2347              
2348             This option causes all configuration options to be reset to their
2349             default values.
2350              
2351             =item posix_default
2352              
2353             This option causes all configuration options to be reset to their
2354             default values as if the environment variable POSIXLY_CORRECT had
2355             been set.
2356              
2357             =item auto_abbrev
2358              
2359             Allow option names to be abbreviated to uniqueness.
2360             Default is enabled unless environment variable
2361             POSIXLY_CORRECT has been set, in which case C is disabled.
2362              
2363             =item getopt_compat
2364              
2365             Allow C<+> to start options.
2366             Default is enabled unless environment variable
2367             POSIXLY_CORRECT has been set, in which case C is disabled.
2368              
2369             =item gnu_compat
2370              
2371             C controls whether C<--opt=> is allowed, and what it should
2372             do. Without C, C<--opt=> gives an error. With C,
2373             C<--opt=> will give option C and empty value.
2374             This is the way GNU getopt_long() does it.
2375              
2376             Note that C<--opt value> is still accepted, even though GNU
2377             getopt_long() doesn't.
2378              
2379             =item gnu_getopt
2380              
2381             This is a short way of setting C C C
2382             C. With C, command line handling should be
2383             reasonably compatible with GNU getopt_long().
2384              
2385             =item require_order
2386              
2387             Whether command line arguments are allowed to be mixed with options.
2388             Default is disabled unless environment variable
2389             POSIXLY_CORRECT has been set, in which case C is enabled.
2390              
2391             See also C, which is the opposite of C.
2392              
2393             =item permute
2394              
2395             Whether command line arguments are allowed to be mixed with options.
2396             Default is enabled unless environment variable
2397             POSIXLY_CORRECT has been set, in which case C is disabled.
2398             Note that C is the opposite of C.
2399              
2400             If C is enabled, this means that
2401              
2402             --foo arg1 --bar arg2 arg3
2403              
2404             is equivalent to
2405              
2406             --foo --bar arg1 arg2 arg3
2407              
2408             If an argument callback routine is specified, C<@ARGV> will always be
2409             empty upon successful return of GetOptions() since all options have been
2410             processed. The only exception is when C<--> is used:
2411              
2412             --foo arg1 --bar arg2 -- arg3
2413              
2414             This will call the callback routine for arg1 and arg2, and then
2415             terminate GetOptions() leaving C<"arg3"> in C<@ARGV>.
2416              
2417             If C is enabled, options processing
2418             terminates when the first non-option is encountered.
2419              
2420             --foo arg1 --bar arg2 arg3
2421              
2422             is equivalent to
2423              
2424             --foo -- arg1 --bar arg2 arg3
2425              
2426             If C is also enabled, options processing will terminate
2427             at the first unrecognized option, or non-option, whichever comes
2428             first.
2429              
2430             =item bundling (default: disabled)
2431              
2432             Enabling this option will allow single-character options to be
2433             bundled. To distinguish bundles from long option names, long options
2434             (and any of their auto-abbreviated shortened forms) I be
2435             introduced with C<--> and bundles with C<->.
2436              
2437             Note that, if you have options C, C and C, and
2438             auto_abbrev enabled, possible arguments and option settings are:
2439              
2440             using argument sets option(s)
2441             ------------------------------------------
2442             -a, --a a
2443             -l, --l l
2444             -al, -la, -ala, -all,... a, l
2445             --al, --all all
2446              
2447             The surprising part is that C<--a> sets option C (due to auto
2448             completion), not C.
2449              
2450             Note: disabling C also disables C.
2451              
2452             =item bundling_override (default: disabled)
2453              
2454             If C is enabled, bundling is enabled as with
2455             C but now long option names override option bundles.
2456              
2457             Note: disabling C also disables C.
2458              
2459             B Using option bundling can easily lead to unexpected results,
2460             especially when mixing long options and bundles. Caveat emptor.
2461              
2462             =item ignore_case (default: enabled)
2463              
2464             If enabled, case is ignored when matching option names. If, however,
2465             bundling is enabled as well, single character options will be treated
2466             case-sensitive.
2467              
2468             With C, option specifications for options that only
2469             differ in case, e.g., C<"foo"> and C<"Foo">, will be flagged as
2470             duplicates.
2471              
2472             Note: disabling C also disables C.
2473              
2474             =item ignore_case_always (default: disabled)
2475              
2476             When bundling is in effect, case is ignored on single-character
2477             options also.
2478              
2479             Note: disabling C also disables C.
2480              
2481             =item auto_version (default:disabled)
2482              
2483             Automatically provide support for the B<--version> option if
2484             the application did not specify a handler for this option itself.
2485              
2486             Getopt::Long will provide a standard version message that includes the
2487             program name, its version (if $main::VERSION is defined), and the
2488             versions of Getopt::Long and Perl. The message will be written to
2489             standard output and processing will terminate.
2490              
2491             C will be enabled if the calling program explicitly
2492             specified a version number higher than 2.32 in the C or
2493             C statement.
2494              
2495             =item auto_help (default:disabled)
2496              
2497             Automatically provide support for the B<--help> and B<-?> options if
2498             the application did not specify a handler for this option itself.
2499              
2500             Getopt::Long will provide a help message using module L. The
2501             message, derived from the SYNOPSIS POD section, will be written to
2502             standard output and processing will terminate.
2503              
2504             C will be enabled if the calling program explicitly
2505             specified a version number higher than 2.32 in the C or
2506             C statement.
2507              
2508             =item pass_through (default: disabled)
2509              
2510             With C anything that is unknown, ambiguous or supplied with
2511             an invalid option will not be flagged as an error. Instead the unknown
2512             option(s) will be passed to the catchall C<< <> >> if present, otherwise
2513             through to C<@ARGV>. This makes it possible to write wrapper scripts that
2514             process only part of the user supplied command line arguments, and pass the
2515             remaining options to some other program.
2516              
2517             If C is enabled, options processing will terminate at the
2518             first unrecognized option, or non-option, whichever comes first and all
2519             remaining arguments are passed to C<@ARGV> instead of the catchall
2520             C<< <> >> if present. However, if C is enabled instead, results
2521             can become confusing.
2522              
2523             Note that the options terminator (default C<-->), if present, will
2524             also be passed through in C<@ARGV>.
2525              
2526             =item prefix
2527              
2528             The string that starts options. If a constant string is not
2529             sufficient, see C.
2530              
2531             =item prefix_pattern
2532              
2533             A Perl pattern that identifies the strings that introduce options.
2534             Default is C<--|-|\+> unless environment variable
2535             POSIXLY_CORRECT has been set, in which case it is C<--|->.
2536              
2537             =item long_prefix_pattern
2538              
2539             A Perl pattern that allows the disambiguation of long and short
2540             prefixes. Default is C<-->.
2541              
2542             Typically you only need to set this if you are using nonstandard
2543             prefixes and want some or all of them to have the same semantics as
2544             '--' does under normal circumstances.
2545              
2546             For example, setting prefix_pattern to C<--|-|\+|\/> and
2547             long_prefix_pattern to C<--|\/> would add Win32 style argument
2548             handling.
2549              
2550             =item debug (default: disabled)
2551              
2552             Enable debugging output.
2553              
2554             =back
2555              
2556             =head1 Exportable Methods
2557              
2558             =over
2559              
2560             =item VersionMessage
2561              
2562             This subroutine provides a standard version message. Its argument can be:
2563              
2564             =over 4
2565              
2566             =item *
2567              
2568             A string containing the text of a message to print I printing
2569             the standard message.
2570              
2571             =item *
2572              
2573             A numeric value corresponding to the desired exit status.
2574              
2575             =item *
2576              
2577             A reference to a hash.
2578              
2579             =back
2580              
2581             If more than one argument is given then the entire argument list is
2582             assumed to be a hash. If a hash is supplied (either as a reference or
2583             as a list) it should contain one or more elements with the following
2584             keys:
2585              
2586             =over 4
2587              
2588             =item C<-message>
2589              
2590             =item C<-msg>
2591              
2592             The text of a message to print immediately prior to printing the
2593             program's usage message.
2594              
2595             =item C<-exitval>
2596              
2597             The desired exit status to pass to the B function.
2598             This should be an integer, or else the string "NOEXIT" to
2599             indicate that control should simply be returned without
2600             terminating the invoking process.
2601              
2602             =item C<-output>
2603              
2604             A reference to a filehandle, or the pathname of a file to which the
2605             usage message should be written. The default is C<\*STDERR> unless the
2606             exit value is less than 2 (in which case the default is C<\*STDOUT>).
2607              
2608             =back
2609              
2610             You cannot tie this routine directly to an option, e.g.:
2611              
2612             GetOptions("version" => \&VersionMessage);
2613              
2614             Use this instead:
2615              
2616             GetOptions("version" => sub { VersionMessage() });
2617              
2618             =item HelpMessage
2619              
2620             This subroutine produces a standard help message, derived from the
2621             program's POD section SYNOPSIS using L. It takes the same
2622             arguments as VersionMessage(). In particular, you cannot tie it
2623             directly to an option, e.g.:
2624              
2625             GetOptions("help" => \&HelpMessage);
2626              
2627             Use this instead:
2628              
2629             GetOptions("help" => sub { HelpMessage() });
2630              
2631             =back
2632              
2633             =head1 Return values and Errors
2634              
2635             Configuration errors and errors in the option definitions are
2636             signalled using die() and will terminate the calling program unless
2637             the call to Getopt::Long::GetOptions() was embedded in C
2638             }>, or die() was trapped using C<$SIG{__DIE__}>.
2639              
2640             GetOptions returns true to indicate success.
2641             It returns false when the function detected one or more errors during
2642             option parsing. These errors are signalled using warn() and can be
2643             trapped with C<$SIG{__WARN__}>.
2644              
2645             =head1 Legacy
2646              
2647             The earliest development of C started in 1990, with Perl
2648             version 4. As a result, its development, and the development of
2649             Getopt::Long, has gone through several stages. Since backward
2650             compatibility has always been extremely important, the current version
2651             of Getopt::Long still supports a lot of constructs that nowadays are
2652             no longer necessary or otherwise unwanted. This section describes
2653             briefly some of these 'features'.
2654              
2655             =head2 Default destinations
2656              
2657             When no destination is specified for an option, GetOptions will store
2658             the resultant value in a global variable named CI, where
2659             I is the primary name of this option. When a program executes
2660             under C (recommended), these variables must be
2661             pre-declared with our() or C.
2662              
2663             our $opt_length = 0;
2664             GetOptions ('length=i'); # will store in $opt_length
2665              
2666             To yield a usable Perl variable, characters that are not part of the
2667             syntax for variables are translated to underscores. For example,
2668             C<--fpp-struct-return> will set the variable
2669             C<$opt_fpp_struct_return>. Note that this variable resides in the
2670             namespace of the calling program, not necessarily C
. For
2671             example:
2672              
2673             GetOptions ("size=i", "sizes=i@");
2674              
2675             with command line "-size 10 -sizes 24 -sizes 48" will perform the
2676             equivalent of the assignments
2677              
2678             $opt_size = 10;
2679             @opt_sizes = (24, 48);
2680              
2681             =head2 Alternative option starters
2682              
2683             A string of alternative option starter characters may be passed as the
2684             first argument (or the first argument after a leading hash reference
2685             argument).
2686              
2687             my $len = 0;
2688             GetOptions ('/', 'length=i' => $len);
2689              
2690             Now the command line may look like:
2691              
2692             /length 24 -- arg
2693              
2694             Note that to terminate options processing still requires a double dash
2695             C<-->.
2696              
2697             GetOptions() will not interpret a leading C<< "<>" >> as option starters
2698             if the next argument is a reference. To force C<< "<" >> and C<< ">" >> as
2699             option starters, use C<< "><" >>. Confusing? Well, B
2700             argument is strongly deprecated> anyway.
2701              
2702             =head2 Configuration variables
2703              
2704             Previous versions of Getopt::Long used variables for the purpose of
2705             configuring. Although manipulating these variables still work, it is
2706             strongly encouraged to use the C routine that was introduced
2707             in version 2.17. Besides, it is much easier.
2708              
2709             =head1 Tips and Techniques
2710              
2711             =head2 Pushing multiple values in a hash option
2712              
2713             Sometimes you want to combine the best of hashes and arrays. For
2714             example, the command line:
2715              
2716             --list add=first --list add=second --list add=third
2717              
2718             where each successive 'list add' option will push the value of add
2719             into array ref $list->{'add'}. The result would be like
2720              
2721             $list->{add} = [qw(first second third)];
2722              
2723             This can be accomplished with a destination routine:
2724              
2725             GetOptions('list=s%' =>
2726             sub { push(@{$list{$_[1]}}, $_[2]) });
2727              
2728             =head1 Troubleshooting
2729              
2730             =head2 GetOptions does not return a false result when an option is not supplied
2731              
2732             That's why they're called 'options'.
2733              
2734             =head2 GetOptions does not split the command line correctly
2735              
2736             The command line is not split by GetOptions, but by the command line
2737             interpreter (CLI). On Unix, this is the shell. On Windows, it is
2738             COMMAND.COM or CMD.EXE. Other operating systems have other CLIs.
2739              
2740             It is important to know that these CLIs may behave different when the
2741             command line contains special characters, in particular quotes or
2742             backslashes. For example, with Unix shells you can use single quotes
2743             (C<'>) and double quotes (C<">) to group words together. The following
2744             alternatives are equivalent on Unix:
2745              
2746             "two words"
2747             'two words'
2748             two\ words
2749              
2750             In case of doubt, insert the following statement in front of your Perl
2751             program:
2752              
2753             print STDERR (join("|",@ARGV),"\n");
2754              
2755             to verify how your CLI passes the arguments to the program.
2756              
2757             =head2 Undefined subroutine &main::GetOptions called
2758              
2759             Are you running Windows, and did you write
2760              
2761             use GetOpt::Long;
2762              
2763             (note the capital 'O')?
2764              
2765             =head2 How do I put a "-?" option into a Getopt::Long?
2766              
2767             You can only obtain this using an alias, and Getopt::Long of at least
2768             version 2.13.
2769              
2770             use Getopt::Long;
2771             GetOptions ("help|?"); # -help and -? will both set $opt_help
2772              
2773             Other characters that can't appear in Perl identifiers are also
2774             supported in aliases with Getopt::Long of at version 2.39. Note that
2775             the characters C, C<|>, C<+>, C<=>, and C<:> can only appear as the
2776             first (or only) character of an alias.
2777              
2778             As of version 2.32 Getopt::Long provides auto-help, a quick and easy way
2779             to add the options --help and -? to your program, and handle them.
2780              
2781             See C in section L.
2782              
2783             =head1 AUTHOR
2784              
2785             Johan Vromans
2786              
2787             =head1 COPYRIGHT AND DISCLAIMER
2788              
2789             This program is Copyright 1990,2015 by Johan Vromans.
2790             This program is free software; you can redistribute it and/or
2791             modify it under the terms of the Perl Artistic License or the
2792             GNU General Public License as published by the Free Software
2793             Foundation; either version 2 of the License, or (at your option) any
2794             later version.
2795              
2796             This program is distributed in the hope that it will be useful,
2797             but WITHOUT ANY WARRANTY; without even the implied warranty of
2798             MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2799             GNU General Public License for more details.
2800              
2801             If you do not have a copy of the GNU General Public License write to
2802             the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
2803             MA 02139, USA.
2804              
2805             =cut
2806