2010-08-25 127 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。