Hi Michael,

 

one way of figuring out if it was called through Execute is to use the caller funtction of Perl.

 

The other one you can try it to use sub_req:

 

sub_req

top

 

http://www.ecos.de/embperl/images/but.gif 

Method:

 

$component -> sub_req [read only]

http://www.ecos.de/embperl/images/transp.gif

http://www.ecos.de/embperl/images/but.gif 

Since:

 

2.0b6

http://www.ecos.de/embperl/images/transp.gif

True is this is not the outermost Embperl component, i.e. this component is called from within another component.

 

Gerald

 

 

 

From: Michael Smith [mailto:smi...@gmail.com]
Sent: Friday, July 23, 2010 12:25 AM
To: Gerald Richter - ECOS
Cc: embperl@perl.apache.org; Michael Stevens; cabell.demarcel...@dianomi.com; Michael Smith
Subject: Re: @param seems to be shared between Execute calls

 

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.rich...@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:smi...@gmail.com]
Sent: Wednesday, July 21, 2010 11:05 AM

Cc: Michael Stevens; cabell.demarcel...@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_gr...@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.stev...@dianomi.com>

To:

embperl@perl.apache.org

Cc:

Michael Smith <michael.sm...@dianomi.com>, cabell.demarcel...@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-unsubscr...@perl.apache.org
For additional commands, e-mail: embperl-h...@perl.apache.org

 

 

Reply via email to