R – Is Perl’s GetOpt::Long accepting abbreviations of switches a bug

getoptperl

This is a simple script I have written to test command line argument handling:

use Getopt::Long;

my $help = 0;

GetOptions(
'help|h|?' => \$help,
) or die "Error!";

print "OK\n";

The results I got are as follows:

D:\>perl test.pl --help
OK

D:\>perl test.pl --hell
Unknown option: hell
Error! at test.pl line 10.

D:\>perl test.pl --he
OK

D:\>perl test.pl --hel
OK

Has anybody noticed this before? Is the behaviour (accepting he and hel instead of help) a potential bug?

Best Answer

No, it's intentional. It accepts the shortest non-ambiguious version of the option, so if you had another option "--hex", it wouldn't accept "--he" but it would accept "--hel".

Related Topic