GetOpt::Std я уже пробовал -- он не умеет делать списки из значений одинаковой опции. То есть в случае нескольких опций -Uaaa -Ubbb значение будет только bbb
Конечно можно самому разбивать строку и по частям ее парсить, но как-то теряется смысл модуля
Getopt::Mixed написано что obsoleted, потому что Getopt::Long уже поддерживает и короткие опции. Но Getopt::Long не поддерживает отсутствие пробела между опцией и аргументом.
А самому править Getopt::Long неприемлемо -- это ж придется тащить в проект кучу кода, ну его нафиг.