Философия Perl, как правило, заключается в том, чтобы «делать то, что практично сейчас». Если вам нужно использовать ООП, его там. Нет необходимости во всех решениях и заставлять человека писать ООП-код, когда это простая проблема типа «сделай это, потом это, то это», часто контрпродуктивная.
Мультипарадигмальную природу perl можно увидеть в таких вещах, как преобразование Шварца, которое имеет очень функциональные аспекты (в Лиспе это известно как «decorate-sort-undecorate»). ООП существует, как и процедурный (C, как программирование) и императив (bash, как «сделай это, затем это»).
Шаблоны проектирования - это повторяющиеся решения общих проблем. Они существуют на каждом языке. Иногда эти шаблоны называются идиомами, хотя это также может относиться к вещам, которые намного проще, чем шаблоны.
При необходимости многие классические шаблоны проектирования GOF могут быть реализованы на Perl. У шаблонов Perl Design Patterns будет много общих имен, которые люди знакомы с GOF. Нет необходимости в том, что все они - идиоматический Perl.
При изучении шаблонов проектирования в Perl, пожалуйста, обратите внимание на «Шаблоны проектирования» не от Mark Dominus .
Многие считают, что шаблоны проектирования - это недостатки в языке . С этой точки зрения шаблоны проектирования, такие как Iterator, часто не нужны в perl. Не всегда - но часто.
Сначала напишите идиоматический Perl. Не пытайтесь писать C на Perl, или LISP на Perl, или Java на Perl. Perl - это Perl. Если есть проблема, которая становится больше, чем может решить идиоматический Perl, и вы начинаете нуждаться в более сложных структурах классов, напишите их. Знайте шаблоны проектирования, чтобы иметь возможность распознавать «эта проблема переросла в точку, требующую абстрактной фабрики» - но не начинайте пытаться создать абстрактную фабрику в Perl, если она вам не нужна.
Некоторые библиотеки существуют как в ООП, так и в более традиционных формах. См. Должен ли я использовать функционально-ориентированные или объектно-ориентированные интерфейсы CGI? на старый вопрос SO, где спрашивают, каким образом использовать библиотеку.