tags:

views:

412

answers:

3

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?

+14  A: 

it is a feature documented here

dfa
Thank you. This was quick.
Andy
You should mark the answer as 'accepted' then.
Sinan Ünür
+8  A: 

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".

Paul Tomblin
Thank you very much.
Andy
+8  A: 

This is a feature. Options may be abbreviated as long as the result is not ambiguous. If you don't want this behavior it is possible to disable it via configuration.

If this were a bug, the place to check to find out whether or not it was a known one is the bug queue at rt.cpan.org.

Michael Carman