Вы можете использовать библиотеки в PL/Perl
Мне просто любопытно, если при написании функций PL/Perl я могу иметь use My::Lib;
утверждение или включить прагму и функции (например,use strict; use feature 'switch';
).
2 ответа
Не при использовании PL/Perl. Он ограничивает использование require и use, поэтому вы не можете импортировать модули. Однако вы можете установить PL/Perlu (для неограниченного режима), который позволяет загружать модули.
Однако plperlu может рассматриваться как угроза безопасности, поскольку он также допускает команды файловой системы, такие как open.
В целях безопасности вы не можете запустить оператор use/require в функции из-под plperl, но вы можете сделать это из-за plperl.
Если вы хотите использовать модули безопасным способом, вы можете добавить plperl.on_init = 'require "myperlinit.pl";'
к postgresql.conf
файл, затем создайте сценарий perl с именем myperlinit.pl в каталоге данных, который содержит ваши использования. Это потребует перезагрузки сервера базы данных, и эти модули доступны для всех ваших функций.
Если вы хотите включить строгий режим, вы можете plperl.use_strict = true
добавлю это.
Примечание: этот скрипт выполняется один раз для каждого соединения при вызове первой функции perl, а не при создании соединения.