можете ли вы использовать библиотеки в PL / Perl

мне просто любопытно, если при написании функций PL/Perl, если я могу иметь use My::Lib; оператор или включить pragma и функции (например,'use strict; use feature 'switch';).

2 ответов


не при использовании PL / Perl. Он ограничивает использование require и use, поэтому вы не можете импортировать модули. Однако вы можете установить PL / Perlu (для неограниченного режима), который позволяет загружать модули.

plperlu можно рассматривать как угрозу безопасности, однако, поскольку он также позволяет командам файловой системы, таким как open.


в целях безопасности вы не можете запустить оператор use/require в функции под plperl, но вы можете под plperlu.

Если вы хотите использовать модули безопасным способом, вы можете добавить plperl.on_init = 'require "myperlinit.pl";' до postgresql.conf file, затем создайте скрипт perl с именем myperlinit.pl в каталоге данных, который содержит ваши uses. Это потребует перезагрузки сервера базы данных, и эти модули доступны для всех ваших функций.

Если вы хотите строгий режим включен, вы можете plperl.use_strict = true добавим его.

Примечание: этот скрипт выполняется один раз на соединение при вызове первой функции perl, а не при создании соединения.