У вас есть два ответа, указывающих на 'require_order', но я думаю, что оба эти ответа неправильно понимают, что делает 'require_order' и что вы ищете.
Если 'require_order' не установлен, вы можете написать (в командной строке):
-a file -b
Где -a и -b - простые опции (без аргументов). При установленном параметре require_order наличие файла завершает работу параметров, а флаг -b становится именем файла.
Я думаю, что вы ищете, это механизм, который позволяет вам сказать, что «-a» появилось перед «file» и «-b». Я не думаю, что Getopt :: Long поддерживает это. На самом деле я не знаю ни одного модуля Getopt :: *, который бы это делал (кроме моего собственного, неопубликованного, Getopt :: JLSS, который я иногда использую). [ Если вас интересует код, отправьте мне письмо на Gmail, используя точку между именем и фамилией. ]