在我看来(从未使用过 G::E 并且尚未测试)就像您想假装它只是一种选择:
=head1 OPTIONS
=over
=item --foo <foo> --bar <bar> | --foo <foo> --baz <baz>
然后使用$ARGV{'--foo'}{'foo'}
and$ARGV{'--foo'}{'bar'}
或$ARGV{'--foo'}{'baz'}
.
我想我假设他们都在争论;你没有说清楚。
更新:似乎有效,但如果您省略 bar 或 baz 或同时指定两者,它会给出误导性错误消息。如果没有一个开关带参数,你可以这样做:
=item --foo --bar | --foo --baz
=for Euclid
false: --foo --baz
$ARGV{'--foo'}
bar 为 true,baz 为 false,如果两者都不存在,则不存在。
从长远来看,您最好向 Getopt::Euclid 作者发送一个允许类似以下内容的补丁:
=item --foo
=for Euclid
requires: --bar | --baz
=item --bar
=for Euclid
requires: --foo
=item --baz
=for Euclid
requires: --foo
因此,如果指定了不一致的选项,它可以产生有意义的错误消息。