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:[EMAIL PROTECTED] > Sent: Friday, January 09, 2004 10:47 PM > To: Fagyal, Csongor > Cc: [EMAIL PROTECTED] > 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--- > > ><[EMAIL PROTECTED]> > > ><% > > >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 > > > > > >- [EMAIL PROTECTED] > > >- 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: [EMAIL PROTECTED] > > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > - [EMAIL PROTECTED] > - 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: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]