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