diff options
author | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2017-06-15 12:35:17 +0100 |
---|---|---|
committer | Chris 'BinGOs' Williams <chris@bingosnet.co.uk> | 2017-06-15 12:35:17 +0100 |
commit | bdb1f1b3738d343c9d3048636256f9d44854d329 (patch) | |
tree | 355114afe25dc2837ee03cdc5d07d029af82dd55 | |
parent | 874389ae053832437addcb8d34e734a61d519323 (diff) | |
download | perl-bdb1f1b3738d343c9d3048636256f9d44854d329.tar.gz |
Update Getopt-Long to CPAN version 2.50
[DELTA]
Changes in version 2.50
-----------------------
* Fix bug https://rt.cpan.org/Ticket/Display.html?id=120231.
* Fix bug https://rt.cpan.org/Ticket/Display.html?id=120300.
Unfortunately, this withdraws a small part of fix 114999.
GNU getopt_long() does not accept the (optional)
argument to be passed to the option without = sign.
We do, since not doing so breaks existing scripts.
* Provide a default value for options (gnu_compat mode).
Thanks to Andrew Gregory.
-rwxr-xr-x | Porting/Maintainers.pl | 2 | ||||
-rw-r--r-- | cpan/Getopt-Long/lib/Getopt/Long.pm | 46 |
2 files changed, 33 insertions, 15 deletions
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index f5598a3366..d9445c7553 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -559,7 +559,7 @@ use File::Glob qw(:case); }, 'Getopt::Long' => { - 'DISTRIBUTION' => 'JV/Getopt-Long-2.49.1.tar.gz', + 'DISTRIBUTION' => 'JV/Getopt-Long-2.50.tar.gz', 'FILES' => q[cpan/Getopt-Long], 'EXCLUDED' => [ qr{^examples/}, diff --git a/cpan/Getopt-Long/lib/Getopt/Long.pm b/cpan/Getopt-Long/lib/Getopt/Long.pm index 5e1834f3ca..664c8b63c9 100644 --- a/cpan/Getopt-Long/lib/Getopt/Long.pm +++ b/cpan/Getopt-Long/lib/Getopt/Long.pm @@ -4,23 +4,24 @@ # Author : Johan Vromans # Created On : Tue Sep 11 15:00:12 1990 # Last Modified By: Johan Vromans -# Last Modified On: Thu Jun 9 14:50:37 2016 -# Update Count : 1699 +# Last Modified On: Sat May 27 12:11:39 2017 +# Update Count : 1715 # Status : Released ################ Module Preamble ################ -package Getopt::Long; - use 5.004; use strict; +use warnings; + +package Getopt::Long; use vars qw($VERSION); -$VERSION = 2.49; +$VERSION = 2.50; # For testing versions only. use vars qw($VERSION_STRING); -$VERSION_STRING = "2.49"; +$VERSION_STRING = "2.50"; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK); @@ -1045,7 +1046,8 @@ sub FindOption ($$$$$) { # Complete the option name, if appropriate. if ( @hits == 1 && $hits[0] ne $opt ) { $tryopt = $hits[0]; - $tryopt = lc ($tryopt) if $ignorecase; + $tryopt = lc ($tryopt) + if $ignorecase > (($bundling && length($tryopt) == 1) ? 1 : 0); print STDERR ("=> option \"$opt\" -> \"$tryopt\"\n") if $debug; } @@ -1110,10 +1112,23 @@ sub FindOption ($$$$$) { # Check if there is an option argument available. if ( $gnu_compat ) { - my $optargtype = 0; # 0 = none, 1 = empty, 2 = nonempty - $optargtype = ( !defined($optarg) ? 0 : ( (length($optarg) == 0) ? 1 : 2 ) ); - return (1, $opt, $ctl, defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : undef) - if (($optargtype == 0) && !$mand); + my $optargtype = 0; # none, 1 = empty, 2 = nonempty, 3 = aux + if ( defined($optarg) ) { + $optargtype = (length($optarg) == 0) ? 1 : 2; + } + elsif ( defined $rest || @$argv > 0 ) { + # GNU getopt_long() does not accept the (optional) + # argument to be passed to the option without = sign. + # We do, since not doing so breaks existing scripts. + $optargtype = 3; + } + if(($optargtype == 0) && !$mand) { + my $val + = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] + : $type eq 's' ? '' + : 0; + return (1, $opt, $ctl, $val); + } return (1, $opt, $ctl, $type eq 's' ? '' : 0) if $optargtype == 1; # --foo= -> return nothing } @@ -1753,12 +1768,12 @@ destination for the option: GetOptions ("library=s" => \@libfiles); Alternatively, you can specify that the option can have multiple -values by adding a "@", and pass a scalar reference as the +values by adding a "@", and pass a reference to a scalar as the destination: GetOptions ("library=s@" => \$libfiles); -Used with the example above, C<@libfiles> (or C<@$libfiles>) would +Used with the example above, C<@libfiles> c.q. C<@$libfiles> would contain two strings upon completion: C<"lib/stdlib"> and C<"lib/extlib">, in that order. It is also possible to specify that only integer or floating point numbers are acceptable values. @@ -2322,11 +2337,14 @@ do. Without C<gnu_compat>, C<--opt=> gives an error. With C<gnu_compat>, C<--opt=> will give option C<opt> and empty value. This is the way GNU getopt_long() does it. +Note that C<--opt value> is still accepted, even though GNU +getopt_long() doesn't. + =item gnu_getopt This is a short way of setting C<gnu_compat> C<bundling> C<permute> C<no_getopt_compat>. With C<gnu_getopt>, command line handling should be -fully compatible with GNU getopt_long(). +reasonably compatible with GNU getopt_long(). =item require_order |