您可以在PL/Perl中使用库吗

您可以在PL/Perl中使用库吗,perl,postgresql,plperl,Perl,Postgresql,Plperl,我只是好奇,在编写PL/Perl函数时,是否可以使用My::Lib语句,或启用pragma和功能(例如,使用strict;使用功能“switch”;)。在使用PL/Perl时不启用。它限制了require和use的使用,因此您无法导入模块。但是,您可以安装PL/Perlu(用于非限制模式),它允许您加载模块 但是,plperlu可以被视为一种安全风险,因为它还允许文件系统命令,如open。出于安全目的,您不能在plperl下的函数中运行use/require语句,但可以在plperlu下运行 如

我只是好奇,在编写PL/Perl函数时,是否可以使用My::Lib语句,或启用pragma和功能(例如,
使用strict;使用功能“switch”;
)。

在使用PL/Perl时不启用。它限制了require和use的使用,因此您无法导入模块。但是,您可以安装PL/Perlu(用于非限制模式),它允许您加载模块


但是,plperlu可以被视为一种安全风险,因为它还允许文件系统命令,如open。

出于安全目的,您不能在plperl下的函数中运行use/require语句,但可以在plperlu下运行

如果您想以安全的方式使用模块,可以添加
plperl.on_init='require“myperlinit.pl”;'
postgresql.conf
文件,然后在包含您的用法的数据目录中创建一个名为myperlinit.pl的perl脚本。这将需要重新启动数据库服务器,并且这些模块可用于您的所有功能

如果您想打开严格模式,可以
plperl.use\u strict=true
将其添加


注意:在调用第一个perl函数时,而不是在创建连接时,此脚本会在每个连接上执行一次。

plperlu非常有用,只要考虑使用它时的安全性,以及它是否会以您可能希望远离它的方式影响您的系统。使用plperlu降低安全风险的重要一点是,要非常仔细地审查其中编写的任何程序,以确保它没有做坏事。