你可以简单地检查你是否留下了非选项.
use Getopt::Long qw( );
my ($opt_t, $opt_p, $opt_cm, $opt_co);
sub parse_args {
Getopt::Long::Configure(qw( posix_default ));
($opt_t, $opt_p, $opt_cm, $opt_co) = ();
Getopt::Long::GetOptions(
'h|help|?' => \&help,
't=s' => \$opt_t,
'p=s' => \$opt_p,
'cm=s' => \$opt_cm,
'co=s' => \$opt_co,
)
or usage();
@ARGV == 0
or usage("Too many arguments.");
}
{
parse_args();
...
}
Run Code Online (Sandbox Code Playgroud)
输出(使用usage下面提供的):
$ ./prog -t xyz -p a b -cm xyz.cmd -co xyz.config
Too many arguments.
Try `prog --help' for more information.
Run Code Online (Sandbox Code Playgroud)
另外,还有一些实施help和建议usage:
use File::Basename qw( basename );
sub help {
my $prog = basename($0);
print("$prog [options]\n");
print("$prog --help\n");
print("\n");
print("Options:\n");
...
exit(0);
}
sub usage {
my $prog = basename($0);
if (my ($msg) = @_) {
chomp($msg);
warn("$msg\n");
}
warn("Try `$prog --help' for more information.\n");
exit(1);
}
Run Code Online (Sandbox Code Playgroud)