Это нормально, чтобы обернуть стандартные модули Perl с Moose? - PullRequest
5 голосов
/ 15 октября 2011

Многие стандартные модули все используют прямой Perl - проблема в том, что эти парни не используют материал Moosey, поэтому я ловлю себя на том, что оборачиваю их Moose или заново для удобства изобретаю некоторые простые функции в больших библиотеках.

Мне было интересноесли бы был какой-то общий подход к тому, как разработчики, использующие Moose, включают другие библиотеки, не относящиеся к Moose.

Будучи новичком в Perl и Moose, я бы хотел лучше понять, как Moose используется в подобных ситуациях, или когда обычно предпочитают использовать Moose против Perl или даже MooseX, или какой-либо другой пакетили будь его произвольным.

Похоже, что существуют разные школы мышления, но Perl так же стара, как и он, - слишком много противоречивых источников, поэтому трудно найти последовательную истину.Я не уверен, во что верить!

У кого-нибудь есть определенный источник, к которому они обращаются для "современного" использования perl?Поймите, я использую Perl только месяц, поэтому я зеленый для этого сообщества.

Обновлено

Я не хочу никого обижать, рассказывая о библиотеках, которые им нравятся, так, как они могут не ценить, поэтому я удалил свой боковой комментарийо некоторых библиотеках, которые я использовал, чтобы переориентироваться на данный вопрос.

Спасибо за ваше руководство!

Ответы [ 2 ]

13 голосов
/ 15 октября 2011

Хотя я не знаю, что делают другие, я бы очень не хотел создавать себе дополнительную работу. Я не вижу общей необходимости Moosify для связки модулей, которые уже работают.

Если вы хотите наследовать от не-Moose модулей, взгляните на MooseX :: NonMoose .

Если вас беспокоит создание HTML-кода в CGI.pm , вы можете использовать CGI :: Simple .

0 голосов
/ 15 октября 2011

О переизобретении CGI


CGI - это библиотека, которая была тщательно опробована и протестирована, и, если она нуждается в улучшении, вы можете создать расширение или добавить / связаться с сопровождающими.Вы должны помнить, что модули настолько же хороши, как их послужной список (надежность) и их содержание.Многие люди создавали достойные модули, но не продолжали поддерживать их, поэтому они как бы упали до неузнаваемости.

CGI - это отдельная лодка, которую, если вы думаете, что много накладных расходов, вы можете использовать CGI :: Простой или CGI :: Минимальный .CGI.pm делает больше, чем анализ строк запросов, он также имеет управление файлами cookie (сеансы), генерацию HTML и другие полезные функции.

Другие критиковали использование CGI.pm, но именно поэтому они разработали FastCGI , который изменяет сервер для использования постоянного состояния сценария, таким образом загружая служебные данные один раз, а не при каждой загрузке страницы.

Возможно создание другого (даже лучше) версия, но зачем?Многие люди могут вам сказать, что вам не следует изобретать велосипед по уважительной причине.CGI существует уже почти два десятилетия, так как многие пользователи тестируют его, находят дыры и исправляют дыры;тем не менее, я никогда не болел за то, чтобы сказать: «Ты не должен что-то делать».Если вы думаете, что-то может быть лучше, сделайте это лучше.Есть много операционных систем, которые существуют сегодня именно по этой причине, зачем соглашаться на то, что делает 95% того, что вам нужно, если вам нужны и другие 5%?Но я также говорю, взвесьте ваши затраты и выгоды и определите, хотите ли вы посвятить свое время этому, или, может быть, есть еще одна проблема, которая еще не решена, которая могла бы использовать немного большеНайм рабочей силы.Чтобы иметь что-то успешное, вам нужно будет тщательно его протестировать, и, скорее всего, вам нужно будет создать то, что захотят другие люди, и (на данный момент) у мотивированных пользователей CGI нет особых причин для мотивации.переключать.

О Modern Perl


Я думаю, " modern Perl " - оксюморон.Я бы в шутку назвал современный Perl;Рубин или Питон.

Нельзя сказать, что Perl бесполезен, потому что это так, но это было давно.Несмотря на значительную долю изменений от версии к версии, самый популярный Perl5 не сильно изменился;обратите внимание, мое определение изменения не добавляется к языку (новые операторы и функциональные возможности), но исключает / заменяет старые функции или изменяет поведение существующих (например, for / foreach циклы).

Примечание: Perl6 можно считать современным perl (и он имеет много существенных изменений), но он не получил широкого распространения и должен был быть выпущен много лет назад (это Duke Nukem 4 Ever языков программирования).

О XS


Я не много занимался программированием модулей, но если память работает правильно, XS - это интерфейс между Perl и C, который, я думаю,позволяет вам компилировать ваши модули Perl для более быстрого выполнения.Рассмотрим модуль DBI PostgreSQL.Существует DBD :: PgPP , который является чистым Perl-модулем для взаимодействия с Postgres, но есть также DBD:: Pg , который, как мне кажется, компилирует часть кода с использованием C и использует преимущества некоторых других утилит ОС.Преимущество скомпилированных модулей заключается в более быстрой загрузке и выполнении (там также может быть более эффективное управление ресурсами).

...