2010-08-25 42 views
2

荫具有问题在plperl的PostgreSQL无法加载的perl模块

CREATE OR REPLACE FUNCTION zm_json (TEXT, TEXT) RETURNS TEXT AS $$ 
    use JSON::XS; 
    # do something 
    return $json_out; 
$$ LANGUAGE plperl; 

创建PostgreSQL函数当我想创建上述IAM函数得到

ERROR: creation of Perl function "zm_json" failed: Unable to load JSON/XS.pm into plperl at line 2. 
BEGIN failed--compilation aborted at line 2. 

JSON :: XS是/usr/lib/perl5和perl下在我的postgres内显示这个目录在库中

CREATE OR REPLACE FUNCTION zm_perl_directories() RETURNS TEXT AS $$ 
    return join(':', @INC); 
$$ LANGUAGE plperl; 

select zm_perl_directories(); 
-[ RECORD 1 ]-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
zm_perl_directories | /etc/perl:/usr/local/lib/perl/5.10.1:/usr/local/share/perl/5.10.1:/usr/lib/perl5:/usr/share/perl5:/usr/lib/perl/5.10:/usr/share/perl/5.10:/usr/local/lib/site_perl:. 

任何想法为什么?

+1

Dupes http://stackoverflow.com/questions/3527843/can-you-use-libraries-in-pl-perl – daxim 2010-08-25 11:56:00

回答

4

我认为plperl正在使用更安全的Perl子集。

因此,一些语言builtins是受限制的。 userequire就是其中之一,否则它会允许任意代码执行。

如果你不在乎,可以随意使用PL/Perlu,这是不受限制的Perl。