Using Perl's Getopt::Long, how can I prevent the module from trying to match ambiguous option names?

getopt-long, perl

Solution

Have a look at the `Getopt::Long` documentation:

auto_abbrev

Allow option names to be abbreviated to uniqueness. Default is enabled unless environment variable POSIXLY_CORRECT has been set, in which case auto_abbrev is disabled.

Example:

use strict;
use warnings;
use Getopt::Long qw(:config no_auto_abbrev);

my ( $file, $fish );

GetOptions( "file=s" => \$file, "fish=s" => \$fish );

And the tests:

$ perl test.pl -fi 24
Unknown option: fi

$ perl test.pl -fis 24
Unknown option: fis

Problem

I am using the `Getopt::Long` module to process command line arguments. The typical behavior of this module is we could pass `-f` instead of full name of the variable `--file`. At the same time if I have another command line variable `--find`, and if I supply only `-f` at the command prompt, it would return with an error: ``` Option f is ambiguous (file, find). ``` I was wondering how can we curb such ambiguous usage? Thanks in advance.

Original source