-2

file.pl

if (! getopts('abisf:',\%Options)){
# Display usage details
print "Usage Error invalid options \n";
exit(1);
}

私が実行した場合:

$>perl file.pl -q @argv;

これは使用法エラーを出力するはずですが、そうではありません。

$>perl file.pl -a @argv;

これはあるはずですが$Options{a}=1、私が見ているのは$Options{a}=''nullです。

どうしたの?

4

1 に答える 1

1

可能な限り、短い自己完結型の正しい (コンパイル) 例を投稿することを忘れないでください。人々があなたを確実に助けてくれるのがはるかに簡単になります。

SSCCE は次のとおりです。

#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Std;

my %Options;

if (! getopts('abisf:',\%Options)){
# Display usage details
print "Usage Error invalid options \n";
exit(1);
}

for my $opt (sort keys %Options)
{
    print "-$opt = $Options{$opt}\n";
}
for my $arg (@ARGV)
{
    print "arg = $arg\n";
}
print "OK\n";

スクリプトがopt.pl呼び出され、以下に示すように呼び出されると、正しく動作しているように見えます。

$ perl opt.pl
OK
$ perl opt.pl -a
-a = 1
OK
$ perl opt.pl -a x
-a = 1
arg = x
OK
$ perl opt.pl -a -f x
-a = 1
-f = x
OK
$ perl opt.pl -a -f x zzz
-a = 1
-f = x
arg = zzz
OK
$ perl opt.pl -q
Unknown option: q
Usage Error invalid options 
$ 

出力に予期しないものが表示されますか? システムに何を取得しましたか?

于 2012-09-15T06:01:29.360 に答える