{"Entry":{"collection":"language","key":"plperl","name":"plperl","aliases":[],"metadata":{"aliases":[],"category":"PL/Perl","content_hash":"ea4d8ba28e5e3524830614636cf4233061ec5a7015491990253d3f107384a6ee","imported_at":"2026-09-30T00:40:44.339819+08:00","name":"plperl","name_zh":"","slug":"plperl","summary":"PL/Perl procedural language"}},"Definition":{"Collection":"language","Key":"plperl","SourceDatabase":"center","Version":"18","SourceTable":"procedural_language","SourceKey":"plperl","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","Facts":{"aliases":[],"attributes":{"comment":"PL/Perl procedural language","default_version":"1.0","family":"PL/Perl","handler":"plperl_call_handler","inline_handler":"plperl_inline_handler","kind":"Bundled procedural-language variant","library":"$libdir/plperl","module_pathname":"$libdir/plperl","trusted":"t","validator":"plperl_validator"},"comparison_data":{"default_version":"1.0","family":"PL/Perl","handler":"plperl_call_handler","inline_handler":"plperl_inline_handler","kind":"Bundled procedural-language variant","library":"$libdir/plperl","trusted":"t","validator":"plperl_validator"},"comparison_hash":"a00c47e0d93a6cb24d319ebff1ecea0c54254650f9ecd1129bb5115a736dc8b5","description":["PL/Perl procedural language"],"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"}],"manual_html":"\u003cdiv class=\"chapter\" id=\"PLPERL\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003eChapter 43. PL/Perl — Perl Procedural Language\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cp\u003ePL/Perl is a loadable procedural language that enables you to write \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e functions and procedures in the \u003ca class=\"ulink\" href=\"https://www.perl.org\"\u003ePerl programming language\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003estring munging\u003c/span\u003e”\u003c/span\u003e 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.\u003c/p\u003e\n\u003cp\u003eTo install PL/Perl in a particular database, use \u003ccode class=\"literal\"\u003eCREATE EXTENSION plperl\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"tip\"\u003e\n\u003ch3 class=\"title\"\u003eTip\u003c/h3\u003e\n\u003cp\u003eIf a language is installed into \u003ccode class=\"literal\"\u003etemplate1\u003c/code\u003e, all subsequently created databases will have the language installed automatically.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"note\"\u003e\n\u003ch3 class=\"title\"\u003eNote\u003c/h3\u003e\n\u003cp\u003eUsers of source packages must specially enable the build of PL/Perl during the installation process. (Refer to \u003ca class=\"xref\" href=\"/docs/18/installation.html\" title=\"Chapter 17. Installation from Source Code\"\u003eChapter 17\u003c/a\u003e for more information.) Users of binary packages might find PL/Perl in a separate subpackage.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e","manual_path":"/docs/18/plperl.html","related":[{"label":"plperl-builtins","url":"/docs/18/plperl-builtins.html"},{"label":"plperl-data","url":"/docs/18/plperl-data.html"},{"label":"plperl-event-triggers","url":"/docs/18/plperl-event-triggers.html"},{"label":"plperl-funcs","url":"/docs/18/plperl-funcs.html"},{"label":"plperl-global","url":"/docs/18/plperl-global.html"},{"label":"plperl-triggers","url":"/docs/18/plperl-triggers.html"},{"label":"plperl-trusted","url":"/docs/18/plperl-trusted.html"},{"label":"plperl-under-the-hood","url":"/docs/18/plperl-under-the-hood.html"}],"release":{"catalog_fingerprint":"65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502","channel":"stable","label":"18.6","major":"18","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"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';","paragraphs":["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."],"title":"Installation definition from the matching source archive"}],"signature":"","source_files":{"src/pl/plperl/plperl--1.0.sql":"8a6ef30b252bfdd4fd79bed8acd37622600544148e780060c8bfa7f968a43716","src/pl/plperl/plperl.control":"12e5ab2ab6f9d9963482311084b3171087a28b3168f7e1e09ada38df4ba264e3"},"sources":[{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual","path":"plperl.html","sha256":"df8d580be7d76f557e7e2e5cc7bec6ad6870ed6ccc987ced882308747c8da608","url":"/docs/18/plperl.html"}],"tables":[]},"ManualEvidence":{"manual_path":"/docs/18/plperl.html","release":{"catalog_fingerprint":"65c93d6048ef30e61023a84f9680fa6a92b1c383b7eb226741170077eb078502","channel":"stable","label":"18.6","major":"18","ref":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2","revision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","source_sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"},"sources":[{"label":"Matching PostgreSQL source archive","sha256":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","url":"https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2"},{"label":"PostgreSQL 18 English manual","path":"plperl.html","sha256":"df8d580be7d76f557e7e2e5cc7bec6ad6870ed6ccc987ced882308747c8da608","url":"/docs/18/plperl.html"}]},"MeasuredEvidence":{}},"Text":{"Collection":"language","Key":"plperl","SourceDatabase":"center","Version":"18","Locale":"en","Title":"plperl","Summary":"PL/Perl procedural language","BodyHTML":"\u003cdiv id=\"PLPERL\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2\u003eChapter 43. PL/Perl — Perl Procedural Language\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cp\u003ePL/Perl is a loadable procedural language that enables you to write \u003cspan\u003ePostgreSQL\u003c/span\u003e functions and procedures in the \u003ca href=\"https://www.perl.org\" rel=\"nofollow\"\u003ePerl programming language\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold \u003cspan\u003e“\u003cspan\u003estring munging\u003c/span\u003e”\u003c/span\u003e 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.\u003c/p\u003e\n\u003cp\u003eTo install PL/Perl in a particular database, use \u003ccode\u003eCREATE EXTENSION plperl\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv\u003e\n\u003ch3\u003eTip\u003c/h3\u003e\n\u003cp\u003eIf a language is installed into \u003ccode\u003etemplate1\u003c/code\u003e, all subsequently created databases will have the language installed automatically.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eNote\u003c/h3\u003e\n\u003cp\u003eUsers of source packages must specially enable the build of PL/Perl during the installation process. (Refer to \u003ca href=\"/docs/18/installation.html\" rel=\"nofollow\"\u003eChapter 17\u003c/a\u003e for more information.) Users of binary packages might find PL/Perl in a separate subpackage.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e","SourceRevision":"555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f","ContentHash":"4b3fa0fece3f28d199a214ab07537b3f261079eb009e86eab72ea1b8c72e7a2f","Payload":{"description":["PL/Perl procedural language"],"manual_html":"\u003cdiv class=\"chapter\" id=\"PLPERL\"\u003e\n\u003cdiv class=\"titlepage\"\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003ch2 class=\"title\"\u003eChapter 43. PL/Perl — Perl Procedural Language\u003c/h2\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cp\u003ePL/Perl is a loadable procedural language that enables you to write \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e functions and procedures in the \u003ca class=\"ulink\" href=\"https://www.perl.org\"\u003ePerl programming language\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe main advantage to using PL/Perl is that this allows use, within stored functions and procedures, of the manyfold \u003cspan class=\"quote\"\u003e“\u003cspan class=\"quote\"\u003estring munging\u003c/span\u003e”\u003c/span\u003e 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.\u003c/p\u003e\n\u003cp\u003eTo install PL/Perl in a particular database, use \u003ccode class=\"literal\"\u003eCREATE EXTENSION plperl\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"tip\"\u003e\n\u003ch3 class=\"title\"\u003eTip\u003c/h3\u003e\n\u003cp\u003eIf a language is installed into \u003ccode class=\"literal\"\u003etemplate1\u003c/code\u003e, all subsequently created databases will have the language installed automatically.\u003c/p\u003e\n\u003c/div\u003e\n\u003cdiv class=\"note\"\u003e\n\u003ch3 class=\"title\"\u003eNote\u003c/h3\u003e\n\u003cp\u003eUsers of source packages must specially enable the build of PL/Perl during the installation process. (Refer to \u003ca class=\"xref\" href=\"/docs/18/installation.html\" title=\"Chapter 17. Installation from Source Code\"\u003eChapter 17\u003c/a\u003e for more information.) Users of binary packages might find PL/Perl in a separate subpackage.\u003c/p\u003e\n\u003c/div\u003e\n\u003c/div\u003e","related":[{"label":"plperl-builtins","url":"/docs/18/plperl-builtins.html"},{"label":"plperl-data","url":"/docs/18/plperl-data.html"},{"label":"plperl-event-triggers","url":"/docs/18/plperl-event-triggers.html"},{"label":"plperl-funcs","url":"/docs/18/plperl-funcs.html"},{"label":"plperl-global","url":"/docs/18/plperl-global.html"},{"label":"plperl-triggers","url":"/docs/18/plperl-triggers.html"},{"label":"plperl-trusted","url":"/docs/18/plperl-trusted.html"},{"label":"plperl-under-the-hood","url":"/docs/18/plperl-under-the-hood.html"}],"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';","paragraphs":["This extension is shipped with the source. Its presence does not establish that the language or external runtime is installed."],"title":"Installation definition from the matching source archive"}],"tables":[]}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
