Обсуждение: Use of perl modules in plperl ?
I am trying to examine the values of $_TD->{new}. I thought the easiest way
to see what this structure looked like was to use the Dumper functionality.
To do so I need to include the appropriate Perl module, which I would think
would be done like this:
use Data::Dumper qw(Dumper);
But inserting that into the script to create the function, like this:
CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$
use Data::Dumper qw(Dumper);
if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) {
......
Returned this error message:
ERROR: Unable to load Data/Dumper.pm into plperl at line 2.
BEGIN failed--compilation aborted at line 2.
CONTEXT: compilation of PL/Perl function "valid_id"
What do I have to do to use Perl modules in plperl function/
BTW this works outside plperl
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
..................
Thanks for the help.
--
"They that would give up essential liberty for temporary safety deserve
neither liberty nor safety."
-- Benjamin Franklin
On Wed, Mar 04, 2020 at 06:03:22AM -0500, stan wrote:
> I am trying to examine the values of $_TD->{new}. I thought the easiest way
> to see what this structure looked like was to use the Dumper functionality.
> To do so I need to include the appropriate Perl module, which I would think
> would be done like this:
>
> use Data::Dumper qw(Dumper);
>
> But inserting that into the script to create the function, like this:
>
> CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$
> use Data::Dumper qw(Dumper);
> if (($_TD->{new}{i} >= 100) || ($_TD->{new}{i} <= 0)) {
> ......
>
> Returned this error message:
>
> ERROR: Unable to load Data/Dumper.pm into plperl at line 2.
> BEGIN failed--compilation aborted at line 2.
> CONTEXT: compilation of PL/Perl function "valid_id"
>
> What do I have to do to use Perl modules in plperl function/
>
> BTW this works outside plperl
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> use Data::Dumper qw(Dumper);
>
> ..................
>
> Thanks for the help.
>
Found plperlu in the docs.
But some syntax help on referencing all the values returned by $_TD->{new}
would be helpful.
--
"They that would give up essential liberty for temporary safety deserve
neither liberty nor safety."
-- Benjamin Franklin
On Wed, Mar 04, 2020 at 06:03:22AM -0500, stan wrote:
> I am trying to examine the values of $_TD->{new}. I thought the easiest way
> to see what this structure looked like was to use the Dumper functionality.
> To do so I need to include the appropriate Perl module, which I would think
> would be done like this:
> use Data::Dumper qw(Dumper);
plperl is trusted, and you can't use "use" in it.
More on this:
https://www.postgresql.org/docs/current/plperl-trusted.html
You have two options:
1. Switch to pl/PerlU
2. set plperl.on_init to whatever "use" you need, examples:
https://www.postgresql.org/docs/current/plperl-under-the-hood.html#PLPERL-CONFIG
Best regards,
depesz