On Oct 12, 2011, at 2:16 AM, Amit Khandekar wrote: > CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$ > $_SHARED{myquote} = sub { > my $arg = shift; > $arg =~ s/(['\\])/\\$1/g; > return "'$arg'"; > }; > $$ LANGUAGE plperl; > > SELECT myfuncs(); /* initializes the function */ > > ERROR: PL/Perl function must return reference to hash or array > CONTEXT: PL/Perl function "myfuncs" > > Not sure if this is now an expected behaviour. Is it? Accordingly, I > can open this in pgsql-bugs or put this issue in pgsql-docs.
Seems like there should be a bar return at the end of the function, otherwise it returns the last expression, which happens to be a code reference. Not very useful in a function that should return VOID. New version: CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$ $_SHARED{myquote} = sub { my $arg = shift; $arg =~ s/(['\\])/\\$1/g; return "'$arg'"; }; return; $$ LANGUAGE plperl; Best, David -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers