Я недавно посетил различные модули графического интерфейса для Perl, и вот мое резюме (отказ от ответственности: в конечном итоге я обнаружил, что ни один из существующих модулей не удовлетворял моим потребностям, поэтому я начал писать свой собственный набор инструментов графического интерфейса).
Tk - Прилично работать и интерфейс очень изящен. Сам графический интерфейс немного устарел и не использует ни одного из родных виджетов операционной системы (например, средства выбора файлов). На большинстве систем для установки потребуется компилятор C.
Wx - Трудно работать с ненормативным интерфейсом. Большие программы почти требуют, чтобы GUI Builder отслеживал все. Поддержка виджетов на уровне ОС неоднозначна. Смотреть лучше, чем ТК ИМО. Компиляция требует установки нескольких библиотек, может быть сложно запустить на Windows. Сборка программ является очень процедурной и не соответствует чисто тому, как на самом деле будет выглядеть программа.
Qt - последний раз, когда я смотрел, этот модуль был более или менее заброшен и поддерживает только Qt3. Я не пытался установить его, но я думаю, что ему нужен компилятор.
Prima - Подобно Tk, он имеет устаревший вид. Требуется компилятор.
W32 :: GUI - Я исключил это рано, так как это не кроссплатформенность.
XUL :: Node / POE :: XUL :: Node - довольно тяжелое дерево зависимостей, включающее C-код. Кажется, не поддерживается, и у меня был смешанный опыт установки. Windows не использовалась, OSX не использовалась, она имела ограниченную функциональность в OpenSUSE. Он также поддерживает только подмножество языка XUL.
Я обнаружил, что ни один из существующих наборов инструментов GUI не позволил настолько легко распространять ваше приложение среди конечных пользователей. Можно ожидать, что программисты перепрыгнут через циклы разрешения библиотечных зависимостей и компиляции кода, но конечные пользователи не собираются этого делать. Итак, первое требование, которое у меня было, - быть чистым Perl.
Во-вторых, почти все существующие наборы инструментов GUI заставляют вас работать очень процедурно: создайте контейнер. Создать упаковщик для контейнера. Создать объект. Установите свойства для этого объекта. Добавьте объект в упаковщик. Запустите упаковщик для заполнения объекта контейнера. Повторите.
Вместо этого я обнаружил, что вложенному дизайну (например, HTML) легче следовать по двум причинам. Во-первых, поскольку объекты являются вложенными, нет необходимости называть все имена (label_456, label_457 ...). Во-вторых, структура программы отражает структуру того, что отображается.
Итак, я начал работать над XUL :: Gui , и он продвигается довольно хорошо. Это чистый Perl, и он зависит только от основных модулей для простоты установки. У него есть одно внешнее требование: установить последнюю (3+) копию Firefox. Он использует знакомый шаблон проектирования веб-разработки с вложенными тегами в стиле CSS. Это, безусловно, на уровне, на котором вы можете написать полнофункциональные приложения с одним окном.
Надеюсь, это поможет вам определить, какой инструментарий лучше всего подходит для вашего проекта.