Commit aed0829c authored by Tom Lane's avatar Tom Lane

Improve warning about creating nested named subroutines in plperl.

Per discussion.
parent a2239b96
<!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.80 2010/02/12 19:35:25 adunstan Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/plperl.sgml,v 2.81 2010/02/25 03:08:07 tgl Exp $ -->
<chapter id="plperl"> <chapter id="plperl">
<title>PL/Perl - Perl Procedural Language</title> <title>PL/Perl - Perl Procedural Language</title>
...@@ -85,12 +85,13 @@ $$ LANGUAGE plperl; ...@@ -85,12 +85,13 @@ $$ LANGUAGE plperl;
<para> <para>
The use of named nested subroutines is dangerous in Perl, especially if The use of named nested subroutines is dangerous in Perl, especially if
they refer to lexical variables in the enclosing scope. Because a PL/Perl they refer to lexical variables in the enclosing scope. Because a PL/Perl
function is wrapped in a subroutine, any named subroutine you create will function is wrapped in a subroutine, any named subroutine you place inside
be nested. In general, it is far safer to create anonymous subroutines one will be nested. In general, it is far safer to create anonymous
which you call via a coderef. See <literal>Variable "%s" will not stay shared</literal> subroutines which you call via a coderef. For more information, see the
and <literal>Variable "%s" is not available</literal> in the entries for <literal>Variable "%s" will not stay shared</literal> and
<citerefentry><refentrytitle>perldiag</></citerefentry> man page for more <literal>Variable "%s" is not available</literal> in the
details. <citerefentry><refentrytitle>perldiag</></citerefentry> man page, or
search the Internet for <quote>perl nested named subroutine</>.
</para> </para>
</note> </note>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment