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:
set.epl:
[- $param[0]->{'test'} = 1 -]
get.epl
[+ 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.
Michael
On Tue, Jul 20, 2010 at 10:20 PM, Ed Grimm <[email protected]> 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
>
>
> From: Michael Stevens <[email protected]> To:
> [email protected] Cc: Michael Smith <[email protected]>,
> [email protected] Date: 07/20/2010 10:12 AM Subject: @param
> seems to be shared between Execute calls
> ------------------------------
>
>
>
> Hi.
>
> 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; -]';
>
> Embperl::Execute({
> inputfile => "blah",
> input => \$input,
> output => \$output1,
> });
>
> my $output2;
> my $input2 = '[- use Data::Dumper; print Dumper(\...@param); -]';
>
> Embperl::Execute({
> 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
> www.dianomi.com
>
> 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: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>