Hi,

> 
>  While working to port some code to Embperl 2.0 I discovered 
> some odd behavior with regards to subroutines and passing the 
> $req object. I'm sure that I'm just doing it wrong, but code 
> that worked in 1.3 will not work in 2.0. I didn't see any 
> mention of changes in regards to how Embperl 2 handles 
> subroutines and the $req object, but I could have missed it. 

The scoping has change in 2.0. What you done in 1.3 worked, but it was never
itended to work.

> 
> subs.epl
> ----------
> [!
> $req = shift;
> !]


The above is done when the file is first loaded

> [$ sub ccHelloWorld $]
> <p>Sub: [+ $req->{TEST} +]</p>
> [$ endsub $]
> 

$req isn't defined anymore when the sub is called (because it's now a
different request, then when the [! !] was executed; at least for the second
and so on request)

> 
> I've tried this a few different ways, including passing $req 
> directly to the sub:
> 

This is a good idea, but this is a method call, so you get the object as
first parameter and the $req as second, so the follwing will work:

> 
> subs.epl
> ---------
> [$ sub ccHelloWorld $]

[- ($self, $req) = @_ -]


The other possibility is to use $epreq which is a global that always
contains the current request object (needs 2.0b11)

Gerald



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to