Мне кажется (никогда не использовал G :: E и не проверял), как будто вы хотите притвориться, что это всего лишь один вариант:
=head1 OPTIONS
=over
=item --foo <foo> --bar <bar> | --foo <foo> --baz <baz>
затем используйте $ARGV{'--foo'}{'foo'}
и $ARGV{'--foo'}{'bar'}
или $ARGV{'--foo'}{'baz'}
.
Я предполагаю, что они все принимают аргументы; Вы не ясно дали понять.
Обновление: похоже, работает, хотя выдает вводящие в заблуждение сообщения об ошибках, если вы опускаете bar или baz или указываете оба. Если ни один из переключателей не принимает аргументы, вы можете сделать:
=item --foo --bar | --foo --baz
=for Euclid
false: --foo --baz
и $ARGV{'--foo'}
будут иметь значение true для бара, false для baz и не существуют, если ни того, ни другого.
В долгосрочной перспективе вам может быть лучше отправить Getopt :: Euclid автору патч, который допускает что-то вроде:
=item --foo
=for Euclid
requires: --bar | --baz
=item --bar
=for Euclid
requires: --foo
=item --baz
=for Euclid
requires: --foo
, поэтому он может выдавать значимые сообщения об ошибках, если указаны несовместимые параметры.