Hi Michael, > Thanks for the email. I'm actually using @param to return > data (as well as the HTML) to the epl script which is calling > another one via Execute. Perhaps there's a better way.
I think you may just be missing one piece of the puzzle: using references with the param argument to the Execute function. To slightly rewrite an example posted previously: use Embperl; use Data::Dumper; my $data = {}; my $output1; my $input = '[- $param[0]->{hello} = 42; -]'; Embperl::Execute({ inputfile => "blah", input => \$input, output => \$output1, param => [ $data ], }); print "Execute of file 1, data is currently set to:\n" . Dumper($data); my $output2; my $input2 = 'Hello! I was executed with the following arguments: [+ do { use Data::Dumper; Dumper(\...@param); } +]'; Embperl::Execute({ inputfile => "blah", input => \$input2, output => \$output2, param => [ $data ], }); print "Execute of file 2, data is currently set to:\n" . Dumper($data); print "Output of Execute() call: $output2 "; This yields: Execute of file 1, data is currently set to: $VAR1 = { 'hello' => 42 }; Execute of file 2, data is currently set to: $VAR1 = { 'hello' => 42 }; Output of Execute() call: Hello! I was executed with the following arguments: $VAR1 = [ { 'hello' => 42 } ]; > On Fri, Jul 23, 2010 at 4:38 AM, Ed Grimm > <ed_gr...@raytheon.com> wrote: > > > If your Embperl pages are calling regular perl module > code that uses @param, couldn't you just pass it from your > Embperl page as a parameter, rather than using it as a global? > > Alternatively, if you are talking about code within an > Embperl page, how do you process those without going through > Execute? Note that the standard apache handler calls > Execute, last I checked. I seem to recall there's a few > other methods to run Embperl pages - but ultimately, they all > call Execute. Disclaimer: I haven't looked in a while, and > it's late, and I'm tired. > > -- > Ed Grimm > Identity Services > > > > From: Michael Smith <smi...@gmail.com> > To: Gerald Richter - ECOS <gerald.rich...@ecos.de> > Cc: embperl@perl.apache.org, Michael Stevens > <michael.stev...@dianomi.com>, > cabell.demarcel...@dianomi.com, Michael Smith > <michael.sm...@dianomi.com> > Date: 07/22/2010 06:25 PM > 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 <mailto: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 > <mailto:smi...@gmail.com> ] > Sent: Wednesday, July 21, 2010 11:05 AM > > > To: embperl@perl.apache.org <mailto:embperl@perl.apache.org> > Cc: Michael Stevens; cabell.demarcel...@dianomi.com > <mailto: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 <mailto: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 > <mailto:michael.stev...@dianomi.com> > > To: embperl@perl.apache.org <mailto:embperl@perl.apache.org> > Cc: Michael Smith <michael.sm...@dianomi.com > <mailto:michael.sm...@dianomi.com> >, > cabell.demarcel...@dianomi.com > <mailto: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 <http://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 > <mailto:embperl-unsubscr...@perl.apache.org> > For additional commands, e-mail: > embperl-h...@perl.apache.org <mailto:embperl-h...@perl.apache.org> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: embperl-unsubscr...@perl.apache.org For additional commands, e-mail: embperl-h...@perl.apache.org