plperl
plperl
plperl : PL/Perl procedural language
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 3260 | plperl
|
plperl
|
1.0 |
LANG
|
PostgreSQL
|
C
|
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
--s-dt-
|
No
|
Yes
|
No
|
Yes
|
no
|
yes
|
| Relationships | |
|---|---|
| Schemas | pg_catalog |
| Requires | plperl
|
| Need By | bool_plperl
hstore_plperl
jsonb_plperl
plperl
sparql
|
| See Also | plperlu
bool_plperlu
jsonb_plperlu
hstore_plperlu
plpgsql
pg_tle
plv8
pllua
|
| Siblings | bool_plperl
hstore_plperl
jsonb_plperl
|
Packages
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
1.0
|
1.0
|
1.0
|
1.0
|
1.0
|
This is a built-in contrib extension ship with the PostgreSQL kernel
Install
Create this extension with:
CREATE EXTENSION plperl CASCADE; -- requires plperlUsage
PL/Perl allows writing PostgreSQL functions in Perl. As a trusted language, it runs in a restricted environment without access to the filesystem or external modules.
CREATE EXTENSION plperl;
-- Simple scalar function
CREATE FUNCTION perl_hello(text) RETURNS text
LANGUAGE plperl AS $$
my ($name) = @_;
return "Hello, $name!";
$$;
SELECT perl_hello('world');
-- Using Perl regex for text processing
CREATE FUNCTION clean_whitespace(text) RETURNS text
LANGUAGE plperl AS $$
my ($str) = @_;
$str =~ s/^\s+|\s+$//g; # trim
$str =~ s/\s+/ /g; # collapse internal whitespace
return $str;
$$;
-- Returning a composite type
CREATE TYPE name_parts AS (first_name text, last_name text);
CREATE FUNCTION split_name(text) RETURNS name_parts
LANGUAGE plperl AS $$
my ($full) = @_;
my ($first, $last) = split(/\s+/, $full, 2);
return { first_name => $first, last_name => $last };
$$;
-- Set-returning function
CREATE FUNCTION perl_generate_series(integer, integer) RETURNS SETOF integer
LANGUAGE plperl AS $$
my ($start, $stop) = @_;
for my $i ($start .. $stop) {
return_next($i);
}
return undef;
$$;
-- Trigger function
CREATE FUNCTION perl_audit_trigger() RETURNS trigger
LANGUAGE plperl AS $$
$_TD->{new}{modified_at} = localtime();
return "MODIFY";
$$;Database access uses spi_exec_query:
CREATE FUNCTION perl_row_count(text) RETURNS integer
LANGUAGE plperl AS $$
my ($table) = @_;
my $rv = spi_exec_query("SELECT count(*) AS cnt FROM $table");
return $rv->{rows}[0]{cnt};
$$;Last updated on