perl-embperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerald Richter - ECOS <>
Subject RE: @param seems to be shared between Execute calls
Date Wed, 21 Jul 2010 09:19:35 GMT
Hi Michael,


@param is only intented to be used to pass parameters to Execute. Setting it directly might
work or might not…


If you want to share data inside a request use


 $epreq -> {test} = 1 ;


The hash of $epreq is not used by Embperl itself, so you are free to use it and it exists
exactly for the live time of one Apache request






From: Michael Smith [] 
Sent: Wednesday, July 21, 2010 11:05 AM
Cc: Michael Stevens;; Michael Smith
Subject: Re: @param seems to be shared between Execute calls


My problem is slightly different - though possibly a manifestation of the same thing.  I
find that param isn't cleaned up between requests.


I have two epl files:



[- $param[0]->{'test'} = 1 -]



[+ Dumper(@param) +]


I find that the data from set.epl turns up when I make a subsequent request for get.epl (in practice it's
a bit more random than that if one is running multiple processes, so I make a few requests
for set.epl and then a few for get.epl)


This only seems to be relevant if I reference param in the epl file I am calling directly.
 If I reference it in epl files which are loaded in by Execute, then they do appear to get
cleaned up.





On Tue, Jul 20, 2010 at 10:20 PM, Ed Grimm <> wrote:

Note that, under Apache, the cleanup code happens at the end of each request - each of which
could have dozens of Execute calls, between which it is very definitely NOT called. 

I have not used Embperl much from within server scripts, but in my limited use there, I've
never seen the cleanup code fire.  I suspect each script is considered 'a request' for the
purposes of the cleanup code (well, as far as docs are concerned.  I don't know if the code
actually fires on END.)

Ed Grimm
Identity Services 

Michael Stevens <> 


Michael Smith <>, 

07/20/2010 10:12 AM 

@param seems to be shared between Execute calls



We're seeing an odd bug where @param seems to be shared between Execute 
calls in the same process. The following code is a test case for this:

#!/usr/bin/perl -w

use strict;
use Embperl;

my $output1;

my $input = '[- $param[0]->{hello} = 42; -]';

                inputfile => "blah",
                input => \$input,
                output => \$output1,

my $output2;
my $input2 = '[- use Data::Dumper; print Dumper(\@param); -]';

                                 inputfile => "blah",
                                 input => \$input2,
                                 output => \$output2

Which on my machine outputs:

$VAR1 = [
            'hello' => 42

Surely this shouldn't happen?

Michael Stevens
Dianomi Ltd
18 Buckingham Gate
London SW1E 6LB

Tel: 020 7802 5530
Fax: 020 7630 7356

The information in this message and any attachment is intended for the 
addressee and is confidential and may be subject to legal privilege. 
Dianomi Ltd, Registered Office: One America Square, Crosswall, London. 
EC3N 2SG. Registered in England and Wales with Company Registration 
Number 4513809. VAT registration number: 809754988

To unsubscribe, e-mail:
For additional commands, e-mail:


View raw message