2

私は次のコードを書きました:

my $version = sub {
    print "$PROGNAME $VERSION - $AUTHOR\n";
    exit 0;
};

my $usage = sub {
    print "Usage: proll <options>\n";
    print "Available options:\n";
    print " -h, --help  Print this help and exit.\n";
    print " --version   Print version.\n";
    print " XdY     Launch X dice with Y faces.\n";
    exit 0;
};

my $ret = GetOptions ( "version" => \$version,
                       "h|help" => \$usage );

しかし、スクリプトを呼び出す--version--help、サブルーチンを呼び出さない場合も同様です。どこが間違っていますか?

そして、次のようにコードを変更すると、コマンド ライン パラメーターなしで常に最初のサブルーチンが呼び出されます。

my $ret = GetOptions ( "version" => &$version,
                       "h|help" => &$usage );
4

1 に答える 1

7

\$versionは への参照$versionであり、$versionは無名サブルーチンへの参照です。つまり、\$versionサブルーチンへの参照への参照です。それはあまりにも間接的です。単一レベルの参照性が必要なだけです。

my $ret = GetOptions ( "version" => $version,
                       "h|help" => $usage );
于 2012-10-09T21:21:18.940 に答える