За кулисами CGI.pm делает то же самое, несмотря на стили. Функциональный интерфейс фактически использует секретный объект, который вы не видите.
Для многих небольших CGI-проектов вам, вероятно, никогда не понадобится более одного объекта CGI за раз, поэтому функциональный интерфейс в порядке. Это может быть более распространенный стиль, но только потому, что большинство людей делают небольшие сценарии для очень специфических задач. Если у вас есть много чего другого, вам может не понравиться CGI.pm, импортирующий длинный (и длинный) список имен функций в ваш скрипт. Некоторые имена функций могут конфликтовать с теми другими модулями, которые нужно импортировать.
Однако я всегда использую объектно-ориентированный интерфейс. Мне не нужно беспокоиться о конфликтах имен, и очевидно, откуда появился какой-либо метод, поскольку вы видите его объект. Также легко передать объект в качестве аргументов другим частям больших приложений и т. Д.
Некоторые люди могут жаловаться на дополнительный набор текста, но это никогда не было медленной частью программирования для меня. Я давно занимаюсь Perl, и я не против синтаксиса. Тем не менее, я использую только CGI, чтобы получить ввод и, возможно, отправить вывод. Я не связываюсь ни с одним из элементов HTML.
Когда он говорит об одном объекте CGI.pm за раз, он ссылается на доступ к входу. Например, после прочтения STDIN другой объект CGI.pm не сможет это прочитать. Вы можете иметь столько объектов, сколько захотите. Они просто не будут обмениваться данными, и первый получит все данные POST.
Хотя вы можете использовать смесь. Вы можете импортировать некоторые вещи, например :html
, но по-прежнему использовать интерфейс OO для обработки ввода.