perl-asp mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Friberg" <robert.frib...@ensofus.se>
Subject RE: The Freakiest thing...
Date Fri, 09 Jan 2004 22:03:45 GMT

The same thing tortured me for weeks, I was getting random
segfaults and didn't have the slightest clue as to what was
causing them. I finally found a sub with a reference to the
Apache::Request object...

Of course you should use subroutines, just make sure to pass
in all info as arguments. IMHO it's bad design when a sub
depends on global variables.


 ------------------------------------------------------------------------
!  Robert Friberg          0733-839080
!  Developer/Trainer       perl,java,dotnet,linux,xml,uml,sql,c/c++,vb
!  Ensofus AB		   http://www.ensofus.se/
!  Miljo Online AB         http://www.miljo-online.se/
 ------------------------------------------------------------------------

> -----Original Message-----
> From: Skylos the Doggie [mailto:skylos@doglover.com]
> Sent: Friday, January 09, 2004 10:47 PM
> To: Fagyal, Csongor
> Cc: asp@perl.apache.org
> Subject: Re: The Freakiest thing...
>
>
> On Fri, 9 Jan 2004, Fagyal, Csongor wrote:
>
> > Skylos,
> >
> > I don't really follow the code snippet you presented here,
>
> I'm not sure how to be more simple.  What part didn't you understand?
>
> > but it sounds to me that you have generated a closure. This is a very
> > usual mod_perl issue.
>
> I should know, I use them regularly in my programming.  :)  They're not an
> issue so much as a useful feature?
>
> > See:
> >
> http://perl.apache.org/docs/general/perl_reference/perl_reference.
> html#Understanding_Closures____the_Easy_Way
>
> Been there.
>
> > Also look at this:
> >
> http://perl.apache.org/docs/general/perl_reference/perl_reference.
> html#my___Scoped_Variable_in_Nested_Subroutines
>
> But this information about scoped variables in nested subroutines I
> believe is the clue.  If my script is a subroutine of Apache::ASP cache
> stuff, then my Main() subroutine is a nested subroutine, and its keeping
> the old value of $frm that was there the last time it ran the nested
> subroutine.
>
> Pretty much, mystery solved!  Thanks muchly for the reference.
>
> > In general you should not declare subroutines inside ASP pages.
>
> *WHAT*????????  Whyever NOT?  Subroutines are.... like one of my most
> basically consistent ways of subdividing programs.  I use them
> extensively!
>
> > (However, I have the rather faint memory that the newest version of
> > Apache::ASP presents a workaround... others will probably
> comment on this.)
>
> I never found any issue with it, outside of occaisonal "redefined
> subroutine" errors in the logs if I had two scripts with the same
> subroutine name...
>
> > - Csongor
> >
> > >Okay, I've gotta bounce this off some other programmers who work with
> > >Apache::ASP.
> > >
> > >This has been reported twice.
> > >
> > >Procedure:
> > >
> > >User loads signup form
> > >
> > >Result:
> > >
> > >User sees somebody else's credit card data - VERY VERY VERY BAD
> > >
> > >Attempts by programmer to recreate:
> > >
> > >Fruitless.
> > >
> > >Thoughts:
> > >
> > >I store the form data in a variable.  This is a my scoped
> variable in the
> > >root file scope.
> > >
> > >I then utilize this $frm variable in a subroutine that I call, without
> > >passing the value.  Utilizing it as a global variable, for the file, at
> > >least.
> > >
> > >The simplest case for example:
> > >
> > >---index.asp---
> > ><%@Language=PerlScript%>
> > ><%
> > >my $frm = $Request->Form();
> > >
> > >Main(%Results);
> > >
> > >sub Main {
> > >  %>various html stuff
> > >  <input type=text name="cc_number" value="<%=$frm->{'cc_number'}%>">
> > >  more html stuff%>
> > >}
> > >%>
> > >---index.asp---
> > >
> > >Now what has happened, reportedly twice (probably many more times),
> > >is that the Main() subroutine displays the cc_number that was entered
> > >BY A DIFFERENT SESSION!
> > >
> > >The question is.  Is it at all possible that some other
> session (perhaps
> > >within the same apache process) acquired some other value of
> $frm through
> > >the persistant-across-page-loads value of $frm within Main?  I
> think you
> > >programmers can understand what I'm asking, though it seems
> muddled even
> > >as I try to type it.
> > >
> > >As I understood it, a file 'my' scoped variable would NOT be persisted
> > >anywhere, but is considered global within subroutines in the same file.
> > >
> > >Maybe I'm wrong.  I know that its ugly what I did there, and I have
> > >revised my code to pass the $frm variable from the file scope to the
> > >subroutine.  Much prettier.
> > >
> > >Your thoughts?
> > >
> > >Skylos
> > >
> > >- skylos@doglover.com
> > >- The best part about the internet is nobody knows you're a dog.
> > >  (Peter Stiener, The New Yorker, July 5, 1993)
> > >- Dogs like... TRUCKS!  (Nissan commercial, 1996)
> > >- PGP key: http://dogpawz.com/skylos/mykey.asc
> > >
> > >---------------------------------------------------------------------
> > >To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
> > >For additional commands, e-mail: asp-help@perl.apache.org
> > >
> > >
> > >
> > >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
> > For additional commands, e-mail: asp-help@perl.apache.org
> >
> >
>
> - skylos@doglover.com
> - The best part about the internet is nobody knows you're a dog.
>   (Peter Stiener, The New Yorker, July 5, 1993)
> - Dogs like... TRUCKS!  (Nissan commercial, 1996)
> - PGP key: http://dogpawz.com/skylos/mykey.asc
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
> For additional commands, e-mail: asp-help@perl.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Mime
View raw message