NAME Getopt::Long::EvenLess - Like Getopt::Long::Less, but with even less features VERSION This document describes version 0.110 of Getopt::Long::EvenLess (from Perl distribution Getopt-Long-EvenLess), released on 2017-08-09. DESCRIPTION This module (GLEL for short) is a reimplementation of Getopt::Long (GL for short), but with much less features. It's an even more stripped down version of Getopt::Long::Less (GLL for short) and is perhaps less convenient to use for day-to-day scripting work. The main goal is minimum amount of code and small startup overhead. This module is an experiment of how little code I can use to support the stuffs I usually do with GL. Compared to GL and GLL, it: * has minimum Configure() support Only these configurations are known: pass_through, no_pass_through (default). GLEL is equivalent to GL in this mode: bundling, no_ignore_case, no_getopt_compat, gnu_compat, permute. No support for configuring via import options e.g.: use Getopt::Long qw(:config pass_through); * does not support increment ("foo+") * no type checking ("foo=i", "foo=f", "foo=s" all accept any string) * does not support optional value ("foo:s"), only no value ("foo") or required value ("foo=s") * does not support desttypes ("foo=s@") * does not support handler other than coderef (so no ""foo=s" => \$scalar", ""foo=s" => \@ary", only ""foo=s" => sub { ... }") Also, in coderef handler, code will get a simple hash instead of a "callback" object as its first argument. * does not support hashref as first argument * does not support bool/negation (no "foo!", so you have to declare both "foo" and "no-foo" manually) The result? Amount of code. GLEL 0.07 is about 175 lines of code, while GL is about 1500. Sure, if you *really* want to be minimalistic, you can use this single line of code to get options: @ARGV = grep { /^--([^=]+)(=(.*))?/ ? ($opts{$1} = $2 ? $3 : 1, 0) : 1 } @ARGV; and you're already able to extract "--flag" or "--opt=val" from @ARGV but you also lose a lot of stuffs like autoabbreviation, "--opt val" syntax support syntax (which is more common, but requires you specify an option spec), custom handler, etc. Startup overhead. Here's a sample startup overhead benchmark: Rate run_gl load_gl load_gl_evenless run_gl_evenless run_gl_less load_gl_less perl run_gl 63.92+-0.13/s -- -1.1% -69.5% -69.5% -70.2% -70.7% -90.8% load_gl 64.65+-0.15/s 1.15+-0.31% -- -69.1% -69.2% -69.8% -70.3% -90.7% load_gl_evenless 209.55+-0.6/s 227.8+-1.1% 224.1+-1.2% -- -0.2% -2.2% -3.9% -69.9% run_gl_evenless 209.88+-0.53/s 228.3+-1.1% 224.6+-1.1% 0.16+-0.38% -- -2.1% -3.7% -69.9% run_gl_less 214.29+-0.47/s 235.24+-0.99% 231.4+-1.1% 2.27+-0.37% 2.1+-0.34% -- -1.7% -69.3% load_gl_less 217.98+-0.57/s 241+-1.1% 237.1+-1.2% 4.03+-0.4% 3.86+-0.38% 1.72+-0.35% -- -68.7% perl 696.9+-2.1/s 990.3+-3.9% 977.9+-4.1% 232.6+-1.4% 232.1+-1.3% 225.2+-1.2% 219.7+-1.3% -- Average times: perl : 1.4349ms load_gl_less : 4.5876ms run_gl_less : 4.6666ms run_gl_evenless : 4.7646ms load_gl_evenless: 4.7721ms load_gl : 15.4679ms run_gl : 15.6446ms FUNCTIONS Configure(@configs | \%config) => hash Set configuration. Known configurations: * pass_through Ignore errors (unknown/ambiguous option) and still make GetOptions return true. * no_pass_through (default) Return old configuration data. To restore old configuration data you can pass it back to "Configure()", e.g.: my $orig_conf = Getopt::Long::EvenLess::Configure("pass_through"); # ... Getopt::Long::EvenLess::Configure($orig_conf); GetOptions(%spec) => bool Shortcut for: GetOptionsFromArray(\@ARGV, %spec) GetOptionsFromArray(\@ary, %spec) => bool Get (and strip) options from @ary. Return true on success or false on failure (unknown option, etc). HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. SEE ALSO Getopt::Long Getopt::Long::Less If you want *more* features intead of less, try Getopt::Long::More. AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 2017, 2016, 2015 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.