perl-embperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Smith <smi...@gmail.com>
Subject Re: @param seems to be shared between Execute calls
Date Thu, 22 Jul 2010 22:24:40 GMT
Thanks Gerald,

That's good to know for the future.  Is there a way to know if the code has
been called through Execute?  I am actually using the same code both
directly and via Execute.

Michael

On Wed, Jul 21, 2010 at 10:19 AM, Gerald Richter - ECOS <
gerald.richter@ecos.de> wrote:

>  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
>
>
>
> Gerald
>
>
>
>
>
>
>
> *From:* Michael Smith [mailto:smithm@gmail.com]
> *Sent:* Wednesday, July 21, 2010 11:05 AM
>
> *To:* embperl@perl.apache.org
> *Cc:* Michael Stevens; cabell.demarcellus@dianomi.com; 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:
>
>
>
> 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 <ed_grimm@raytheon.com> 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 <michael.stevens@dianomi.com>
>
> To:
>
> embperl@perl.apache.org
>
> Cc:
>
> Michael Smith <michael.smith@dianomi.com>, cabell.demarcellus@dianomi.com
>
> 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: embperl-unsubscribe@perl.apache.org
> For additional commands, e-mail: embperl-help@perl.apache.org
>
>
>

Mime
View raw message