This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
deaa472fb23615d04ecebacfc1de15d13354cc03
[perl5.git] / lib / Getopt / Long / CHANGES
1 Changes in version 2.27
2 -----------------------
3
4 * Fix several problems with internal and external use of 'die' and
5   signal handlers.
6
7 * Fixed some bugs with subtle combinations of bundling_override and
8   ignore_case.
9
10 * A callback routine that is associated with a hash-valued option will
11   now have both the hask key and the value passed. It used to get only
12   the value passed.
13
14 * Eliminated the use of autoloading. Autoloading kept generating
15   problems during development, and when using perlcc.
16
17 * Lots of internal restructoring to make room for extensions.
18
19 * Redesigned the regression tests.
20
21 Changes in version 2.26
22 -----------------------
23
24 * New option type: 'o'. It accepts all kinds of integral numbers in
25   Perl style, including decimal (24), octal (012), hexadecimal (0x2f)
26   and binary (0b1001).
27
28 * Fix problem with getopt_compat not matching +foo=bar.
29
30 * Remove $VERSION_STRING for production versions.
31
32 Changes in version 2.26
33 -----------------------
34
35 * New option type: 'o'. It accepts all kinds of integral numbers in
36   Perl style, including decimal (24), octal (012), hexadecimal (0x2f)
37   and binary (0b1001).
38
39 * Fix problem with getopt_compat not matching +foo=bar.
40
41 * Remove $VERSION_STRING for production versions.
42
43 Changes in version 2.25
44 -----------------------
45
46 * Change handling of a lone "-" on the command line. It will now be
47   treated as a non-option unless an explicit specification was passed
48   to GetOptions. See the manual.
49   In the old implementation an error was signalled, so no
50   compatibility breaks are expected from this change.
51
52 * Add $VERSION_STRING. This is the string form of $VERSION. Usually
53   they are identical, unless it is a pre-release in which case
54   $VERSION will be (e.g.) 2.2403 and $VERSION_STRING will be "2.24_03".
55
56 Changes in version 2.24
57 -----------------------
58
59 * Add object oriented interface:
60
61     use Getopt::Long;
62     $p = new Getopt::Long::Parser;
63     $p->configure(...configuration options...);
64     if ($p->getoptions(...options descriptions...)) ...
65
66 * Add configuration at 'use' time:
67
68     use Getopt::Long qw(:config no_ignore_case bundling);
69
70 * Add configuration options "gnu_getopt" and "gnu_compat".
71
72   "gnu_compat" controls whether --opt= is allowed, and what it should
73   do. Without "gnu_compat", --opt= gives an error. With "gnu_compat", 
74   --opt= will give option "opt" and empty value.
75   This is the way GNU getopt_long does it.
76
77   "gnu_getopt" is a short way of setting "gnu_compat bundling permute
78   no_getopt_compat. With "gnu_getopt", command line handling should be
79   fully compatible with GNU getopt_long.
80
81 * Correct warnings when the user specified an array or hash
82   destination using a non-lowercase option, e.g. "I=s@".
83
84 * Correct ambiguous use of 'set' and 'reset' in the Configuration
85   section of the documentation. 
86
87 * Add configuration option "posix_default" to reset to defaults as if
88   POSIXLY_CORRECT were set.
89
90 * Disallow "no" prefix on configuration options "default", "prefix" and
91   "prefix_pattern". 
92
93 * Add a section "Trouble Shooting" to the documentation, with
94   frequently asked questions.
95
96 Changes in version 2.23
97 -----------------------
98
99 * When a call-back routine issues 'die', messages starting with "!"
100   are treated specially. Currently, only "!FINISH" is recognised (see
101   the next bullet point). Other messages that start with "!" are
102   ignored.
103
104 * Change 'die("FINISH") (see changes in 2.21) to die("!FINISH"). This
105   is an incompatible change, but I guess noone is using this yet.
106
107 Changes in version 2.22
108 -----------------------
109
110 * Fixes a bug in the combination of aliases and negation.
111
112   Old:  "foo|bar!" allowed negation on foo, but not on bar.
113   New:  "foo|bar!" allows negation on foo and bar.
114
115   Caveat: "foo|f!", with bundling, issues the warning that negation on
116   a short option is ignored. To obtain the desired behaviour, use
117
118         "foo!" => \$opt_foo, "f" => \$opt_foo
119   or
120         "foo|f" => \$opt_foo, "nofoo" => sub { $opt_foo = 0 }
121
122   Remember that this is _only_ required when bundling is in effect.
123
124 Changes in version 2.21
125 -----------------------
126
127 * New documentation.
128
129 * User defined subroutines should use 'die' to signal errors.
130
131 * User defined subroutines can preliminary terminate options
132   processing by calling die("FINISH");
133
134 * Correct erroneous install of Getopt::Long manpage.
135   Previous versions seem to install Getopt::GetoptLong instead of
136   Getopt::Long.
137
138 Changes in version 2.20
139 -----------------------
140
141 * Prevent the magic argument "<>" from being interpreted as option
142   starter characters if it is the first argument passed.
143   To use the characters "<>" as option starters, pass "><" instead.
144
145 * Changed license: Getopt::Long may now also be used under the Perl
146   Artistic License.
147
148 * Changed the file name of the distribution kit from "GetoptLong..."
149   to "Getopt-Long-..." to match the standards.
150
151 Changes in version 2.19
152 -----------------------
153
154 * Fix a warning bug with bundling_override.
155
156 There's no version 2.18
157 -----------------------
158
159 Changes in version 2.17
160 -----------------------
161
162 * Getopt::Long::config is renamed Getopt::Long::Configure. The old
163   name will remain supported without being documented.
164
165 * Options can have the specifier '+' to denote that the option value
166   must be incremented each time the option occurs on the command line.
167   For example:
168
169      my $more = 2;
170      Getopt::Long::Configure("bundling");
171      GetOptions ("v+" => \$more);
172      print STDOUT ("more = $more\n");
173
174   will print "more = 3" when called with "-v", "more = 4" when called
175   with "-vv" (or "-v -v"), and so on.
176
177 * Getopt::Long now uses autoloading. This substantially reduces the
178   resources required to 'use Getopt::Long' (about 100 lines of over
179   1300 total).
180
181 * It is now documented that global option variables like $opt_foo
182   need to be declared using 'use vars ...' when running under 'use
183   strict'. 
184
185 * To install, it is now required to use the official procedure:
186
187      perl Makefile.PL
188      make
189      make test
190      make install
191
192 Changes in version 2.16
193 -----------------------
194
195 * A couple of small additional fixes to the $` $& $' fixes.
196
197 * The option prefix can be set using config("prefix=...") or, more
198   powerful, with config("prefix_pattern=..."); see the documentation
199   for details.
200
201 * More 'perl -w' warnings eliminated for obscure cases of bundling.
202
203 This version is identical to 2.15, which was not released.
204
205 There's no version 2.14
206 -----------------------
207
208 Changes in version 2.13
209 -----------------------
210
211 * All regexps are changed to avoid the use of $`, $& and $'. Using one
212   of these causes all pattern matches in the program to be much slower
213   than necessary.
214
215 * Configuration errors are signalled using die() and will cause the
216   program to be terminated (unless eval{...} or $SIG{__DIE__} is
217   used).
218
219 * Option parsing errors are now signalled with calls to warn().
220
221 * In option bundles, numeric values may be embedded in the bundle
222   (e.g. -al24w80).
223
224 * More 'perl -w' warnings eliminated for obscure cases of bundling.
225
226 * Removed non-standard version number matching. Version 1.121 is now
227   more than 1.12 but less than 1.13. 
228
229 Changes in version 2.12
230 -----------------------
231
232 * A single question mark is allowed as an alias to an option, e.g. 
233
234     GetOptions ("help|?", ...)
235
236 Changes in version 2.11
237 -----------------------
238
239 * User linkage may be an object, provided the object is really a hash.
240
241   For example:
242
243     {   package Foo;
244         sub new () { return bless {}; }
245     }
246
247     my $linkage = Foo->new();
248
249     GetOptions ($linkage, ... );
250
251 * Some bug fixes in handling obscure cases of pass-through.
252
253 Changes in version 2.9
254 ----------------------
255
256 * A new way to configure Getopt::Long. Instead of setting module local
257   variables, routine Getopt::Long::config can be called with the names
258   of options to be set or reset, e.g.
259
260     Getopt::Long::config ("no_auto_abbrev", "ignore_case");
261
262   Configuring by using the module local variables is deprecated, but
263   it will continue to work for backwark compatibility.
264
265 Changes in version 2.6
266 ----------------------
267
268 * Handle ignorecase even if autoabbrev is off. 
269
270 * POD corrections.
271
272 Changes in version 2.4
273 ----------------------
274
275 * Pass-through of unrecognized options. Makes it easy to write wrapper
276   programs that process some of the command line options but pass the
277   others to another program.
278
279 * Options can be of type HASH, now you can say
280
281     --define foo=bar
282
283   and have $opt_define{"foo"} set to "bar".
284
285 * An enhanced skeleton program, skel2.pl, that combines the power of
286   Getopt::Long with Pod::Usage. 
287   Module Pod::Usage can be obtained from CPAN,
288   http://www.perl.com/CPAN/authors/Brad_Appleton. 
289
290 Possible incompatibility in version 2.4
291 ---------------------------------------
292
293 Previous versions of Getopt::Long always downcased the option variable
294 names when ignorecase was in effect. This bug has been corrected. As a
295 consequence, &GetOptions ("Foo") will now set variable $opt_Foo
296 instead of $opt_foo.
297