我很好奇是否在编写PL / Perl函数时,如果我可以使用use My::Lib;
语句,或启用编译指示和功能(例如“use strict; use feature 'switch';
”)。
答案 0 :(得分:6)
不使用PL / Perl时。它限制了require和use的使用,因此您无法导入模块。但是,您可以安装PL / Perlu(用于非限制模式),允许您加载模块。
但是,pperlu可能被视为安全风险,因为它还允许文件系统命令,例如open。答案 1 :(得分:0)
出于安全考虑,你不能在plperl下的函数中运行use / require语句,但你可以在plperlu下运行。
如果您想以安全的方式使用模块,可以将plperl.on_init = 'require "myperlinit.pl";'
添加到postgresql.conf
文件,然后在数据目录中创建一个名为myperlinit.pl的perl脚本,其中包含您的用途。这将需要重新启动数据库服务器,并且这些模块可用于您的所有功能。
如果您想要启用严格模式,则plperl.use_strict = true
可以添加它。
注意:调用第一个perl函数时,每个连接执行一次此脚本,而不是在创建连接时执行。