Я создал ряд вспомогательных функций, специфичных для работы, которые могут быть полезны для других членов моей команды & mdash. Но я написал их все в Elisp Emacs, и заставить их конвертировать из Notepad ++ НЕ произойдет.
Итак, я думаю преобразовать функции в Perl. Нет проблем.
За исключением того, что я все время использую ido-завершение, чтобы ограничить ответы:
(setq client (ido-completing-read "Select a Client: " '("IniTrade" "HedgeCorp" "GlobalTech" "OCP") nil t))
РЕДАКТИРОВАТЬ: ido-completeting-read аналогична complete-read , за исключением того, что все параметры видимы и могут быть выбраны с помощью циклического перемещения [обычно клавиш со стрелками] или завершения ввода. В приведенном выше примере подсказка будет выглядеть как
Select a Client: {IniTrade | HedgeCorp | GlobalTech | OCP}
выбор можно сделать для самого левого элемента, нажав RET или частично введя (в этом случае все первые буквы уникальны, так что это все, что нужно, и соответствующий элемент станет левым самый).
nil в этом примере - неиспользуемый параметр, но для «t» требуется точное совпадение - например, пользователь должен сделать один из вариантов выбора. Функция возвращает строку, например «IniTrade».
Мои «вспомогательные функции» предназначены для внутренних нужд - открытия определенного журнала ошибок, восстановления пакета на сервере и т. Д. Для этих операций пользователю необходимо указать тестовую или производственную среду, клиент, этап и т. Д. В почти во всех случаях это выборки строк, которые используются для построения другой команды оболочки. Если возвращается числовой элемент, который, в свою очередь, может быть преобразован в строку, но поскольку выборки обычно являются обязательной строкой, было бы неплохо пропустить этот шаг. [конец EDIT]
Есть ли эквивалент Perl? Я посмотрел на Term :: Prompt , который предлагает нумерованное меню ... самое близкое, что я нашел. Это не так красиво, как завершение ido, и мне все равно придется преобразовывать числовой результат обратно в строку (это не главная проблема; просто раздражает).
При составлении этого текста я заметил, что использовал термин «меню», поэтому провел еще несколько поисков и нашел Term :: Menus. Я еще не пробовал этот вариант.