你可以在PL / Perl中使用库吗?

时间:2010-08-20 02:47:41

标签: perl postgresql plperl

我很好奇是否在编写PL / Perl函数时,如果我可以使用use My::Lib;语句,或启用编译指示和功能(例如“use strict; use feature 'switch';”)。

2 个答案:

答案 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函数时,每个连接执行一次此脚本,而不是在创建连接时执行。