{"kind": "language", "major": "18", "item": {"slug": "plperl", "name": "plperl", "name_zh": "", "category": "PL/Perl", "summary": "PL/Perl procedural language", "aliases": [], "content_hash": "ea4d8ba28e5e3524830614636cf4233061ec5a7015491990253d3f107384a6ee", "versions": {"10": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/10/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/10/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/10/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/10/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/10/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/10/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/10/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/10/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "revision": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9", "catalog_fingerprint": "691be281b476dde4374d7f805b2bacc2e75bdef40f1e9d3d42e91f97fe95cfd0"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, {"url": "/docs/10/plperl.html", "path": "plperl.html", "label": "PostgreSQL 10 English manual", "sha256": "0dc1861c3937d43ab270c0f8a1ed4ca9f31b718ef8c5857a3203c351e149e04b"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE plperl;\n\nCOMMENT ON PROCEDURAL LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a044.\u00a0PL/Perl - Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/10/installation.html\" title=\"Chapter\u00a016.\u00a0 Installation from Source Code\">Chapter\u00a016</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/10/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "250d2b026d57a797dfd3e20e866ae0de6d4f1b8f5488e1fe59e869e07fb18728", "src/pl/plperl/plperl--1.0.sql": "fa51bc8383901a213b24d08231cc89d1ab33f742c9a86cee82f4a529a1997287"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "11": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/11/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/11/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/11/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/11/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/11/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/11/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/11/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/11/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "revision": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0", "catalog_fingerprint": "8f21f4444b7f68923f4762af0eb7937fa2907026e91249483e79050de012c901"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, {"url": "/docs/11/plperl.html", "path": "plperl.html", "label": "PostgreSQL 11 English manual", "sha256": "ae66a071ede516182a6aeaa4bacb14b62f82c1ee80bf2aa50a7a9054fa809655"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE PROCEDURAL LANGUAGE plperl;\n\nCOMMENT ON PROCEDURAL LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a045.\u00a0PL/Perl - Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/11/installation.html\" title=\"Chapter\u00a016.\u00a0Installation from Source Code\">Chapter\u00a016</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/11/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "250d2b026d57a797dfd3e20e866ae0de6d4f1b8f5488e1fe59e869e07fb18728", "src/pl/plperl/plperl--1.0.sql": "fa51bc8383901a213b24d08231cc89d1ab33f742c9a86cee82f4a529a1997287"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "12": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/12/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/12/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/12/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/12/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/12/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/12/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/12/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/12/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "revision": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b", "catalog_fingerprint": "9f857f4ee4875f9c7de6bfc9df4b757dec8b3a0bb88eadb519c7bd267bd56149"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, {"url": "/docs/12/plperl.html", "path": "plperl.html", "label": "PostgreSQL 12 English manual", "sha256": "e05699e450ae3d91eb6ad6afc0024c5ef923397f60922a99d28410f902b67c81"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\n/*\n * Currently, all the interesting stuff is done by CREATE LANGUAGE.\n * Later we will probably \"dumb down\" that command and put more of the\n * knowledge into this script.\n */\n\nCREATE LANGUAGE plperl;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a044.\u00a0PL/Perl - Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/12/installation.html\" title=\"Chapter\u00a016.\u00a0Installation from Source Code\">Chapter\u00a016</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/12/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "250d2b026d57a797dfd3e20e866ae0de6d4f1b8f5488e1fe59e869e07fb18728", "src/pl/plperl/plperl--1.0.sql": "31337bfcf8be9cd8ca68720ea57dcc534126d94bbc31ed64961e9f05df485992"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "13": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/13/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/13/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/13/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/13/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/13/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/13/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/13/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/13/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "revision": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6", "catalog_fingerprint": "c7015c845255c9d721c547c8ab9ef37825d332588c9691d982e6906b7d571002"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, {"url": "/docs/13/plperl.html", "path": "plperl.html", "label": "PostgreSQL 13 English manual", "sha256": "b338fb156771be52355c3af59a1b5cefa7d7a99d962ea5c867b85dac11248391"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a044.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/13/installation.html\" title=\"Chapter\u00a016.\u00a0Installation from Source Code\">Chapter\u00a016</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/13/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "14": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/14/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/14/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/14/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/14/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/14/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/14/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/14/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/14/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "revision": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897", "catalog_fingerprint": "b272e6a82e4c46efda81c3a6a4cdf7de6a83dfff7f02f226a392fbe9acdd3adb"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, {"url": "/docs/14/plperl.html", "path": "plperl.html", "label": "PostgreSQL 14 English manual", "sha256": "979db062b9446c62c482ca97407cf30588c64918d16004ba41763b7f5dc81bd5"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a045.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/14/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/14/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "15": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/15/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/15/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/15/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/15/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/15/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/15/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/15/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/15/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "revision": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89", "catalog_fingerprint": "fefe3c425147a86defada190c9b0663cfe02caa1724f5dede93e46457572252d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, {"url": "/docs/15/plperl.html", "path": "plperl.html", "label": "PostgreSQL 15 English manual", "sha256": "02f8f31ad3c267a457db0f845072a1f03eabdd1efdeaf48fc3e163445fea3227"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a045.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/15/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/15/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "16": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/16/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/16/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/16/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/16/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/16/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/16/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/16/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/16/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "revision": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed", "catalog_fingerprint": "fa133458dc8f52e15083b4f59b7a582e2e378b608d3ac5c53054df458a374e23"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, {"url": "/docs/16/plperl.html", "path": "plperl.html", "label": "PostgreSQL 16 English manual", "sha256": "cb37a0a73ae8fe47ce7ccc8c996e30d866b9064fa3bfe9a3a0a55ef3b48d31d6"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a045.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/16/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/16/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "17": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/17/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/17/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/17/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/17/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/17/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/17/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/17/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/17/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "revision": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979", "catalog_fingerprint": "4bbe3ac77becd618478f66aec420a533e9017be356c5c1d51a4b17f0fd497c07"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, {"url": "/docs/17/plperl.html", "path": "plperl.html", "label": "PostgreSQL 17 English manual", "sha256": "513140d0aad3ffe43682ff112bc86c4e83fe365d83620597c1cd4772a8001acb"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a043.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/17/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/17/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "18": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/18/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/18/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/18/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/18/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/18/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/18/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/18/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/plperl.html", "path": "plperl.html", "label": "PostgreSQL 18 English manual", "sha256": "df8d580be7d76f557e7e2e5cc7bec6ad6870ed6ccc987ced882308747c8da608"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a043.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/18/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/18/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "19": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/19/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/19/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/19/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/19/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/19/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/19/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/19/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/19/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "revision": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86", "catalog_fingerprint": "62fbf1a3689dbe8bf7e6b3372cfe6fbf867581427b3858a94c8419b77a4d2d1d"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, {"url": "/docs/19/plperl.html", "path": "plperl.html", "label": "PostgreSQL 19 English manual", "sha256": "210f046eb389e19dd28acfa2e4c14809e807c0ed90a8ef00815b99f57f83eb7a"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a043.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/19/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/19/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "20": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/devel/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/devel/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/devel/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/devel/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/devel/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/devel/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/devel/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/devel/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "revision": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "catalog_fingerprint": "398fbb9f262264053c02fbf79f88be0a6770c1473faa6ecd5931d6ec41b8258b", "source_snapshot_utc": "26-Sep-2026 20:22"}, "sources": [{"url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, {"url": "/docs/devel/plperl.html", "path": "plperl.html", "label": "PostgreSQL 20 English manual", "sha256": "5304a6a5285459aa594b3c30b6be909af1539d997556a8d13a9d4cd1f6cad125"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a043.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/devel/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/devel/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}}}, "snapshot": {"facts": [{"label": "Kind", "value": "Bundled procedural-language variant"}, {"label": "Family", "value": "PL/Perl"}, {"label": "Trusted", "value": "t"}, {"label": "Handler", "value": "plperl_call_handler"}, {"label": "Inline handler", "value": "plperl_inline_handler"}, {"label": "Validator", "value": "plperl_validator"}, {"label": "Library", "value": "$libdir/plperl"}, {"label": "Default version", "value": "1.0"}, {"label": "Module pathname", "value": "$libdir/plperl"}, {"label": "Comment", "value": "PL/Perl procedural language"}], "tables": [], "aliases": [], "related": [{"url": "/docs/18/plperl-builtins.html", "label": "plperl-builtins"}, {"url": "/docs/18/plperl-data.html", "label": "plperl-data"}, {"url": "/docs/18/plperl-event-triggers.html", "label": "plperl-event-triggers"}, {"url": "/docs/18/plperl-funcs.html", "label": "plperl-funcs"}, {"url": "/docs/18/plperl-global.html", "label": "plperl-global"}, {"url": "/docs/18/plperl-triggers.html", "label": "plperl-triggers"}, {"url": "/docs/18/plperl-trusted.html", "label": "plperl-trusted"}, {"url": "/docs/18/plperl-under-the-hood.html", "label": "plperl-under-the-hood"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "catalog_fingerprint": "65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502"}, "sources": [{"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, {"url": "/docs/18/plperl.html", "path": "plperl.html", "label": "PostgreSQL 18 English manual", "sha256": "df8d580be7d76f557e7e2e5cc7bec6ad6870ed6ccc987ced882308747c8da608"}], "sections": [{"code": "/* src/pl/plperl/plperl--1.0.sql */\n\nCREATE FUNCTION plperl_call_handler() RETURNS language_handler\n  LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_inline_handler(internal) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE FUNCTION plperl_validator(oid) RETURNS void\n  STRICT LANGUAGE c AS 'MODULE_PATHNAME';\n\nCREATE TRUSTED LANGUAGE plperl\n  HANDLER plperl_call_handler\n  INLINE plperl_inline_handler\n  VALIDATOR plperl_validator;\n\n-- The language object, but not the functions, can be owned by a non-superuser.\nALTER LANGUAGE plperl OWNER TO @extowner@;\n\nCOMMENT ON LANGUAGE plperl IS 'PL/Perl procedural language';", "title": "Installation definition from the matching source archive", "paragraphs": ["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."]}], "signature": "", "attributes": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "comment": "PL/Perl procedural language", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0", "module_pathname": "$libdir/plperl"}, "description": ["PL/Perl procedural language"], "manual_html": "<div class=\"chapter\" id=\"PLPERL\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">Chapter\u00a043.\u00a0PL/Perl \u2014 Perl Procedural Language</h2>\n</div>\n</div>\n</div>\n\n<p>PL/Perl is a loadable procedural language that enables you to write <span class=\"productname\">PostgreSQL</span> functions and procedures in the <a class=\"ulink\" href=\"https://www.perl.org\">Perl programming language</a>.</p>\n<p>The main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold <span class=\"quote\">\u201c<span class=\"quote\">string munging</span>\u201d</span> operators and functions available for Perl. Parsing complex strings might be easier using Perl than it is with the string functions and control structures provided in PL/pgSQL.</p>\n<p>To install PL/Perl in a particular database, use <code class=\"literal\">CREATE EXTENSION plperl</code>.</p>\n<div class=\"tip\">\n<h3 class=\"title\">Tip</h3>\n<p>If a language is installed into <code class=\"literal\">template1</code>, all subsequently created databases will have the language installed automatically.</p>\n</div>\n<div class=\"note\">\n<h3 class=\"title\">Note</h3>\n<p>Users of source packages must specially enable the build of PL/Perl during the installation process. (Refer to <a class=\"xref\" href=\"/docs/18/installation.html\" title=\"Chapter\u00a017.\u00a0Installation from Source Code\">Chapter\u00a017</a> for more information.) Users of binary packages might find PL/Perl in a separate subpackage.</p>\n</div>\n</div>", "manual_path": "/docs/18/plperl.html", "source_files": {"src/pl/plperl/plperl.control": "12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3", "src/pl/plperl/plperl--1.0.sql": "8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716"}, "comparison_data": {"kind": "Bundled procedural-language variant", "family": "PL/Perl", "handler": "plperl_call_handler", "library": "$libdir/plperl", "trusted": "t", "validator": "plperl_validator", "inline_handler": "plperl_inline_handler", "default_version": "1.0"}, "comparison_hash": "a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}