On Sat, Aug 26, 2000 at 01:56:18PM +0200, Stas Bekman wrote:
: On Fri, 25 Aug 2000, Philip Molter wrote:
:
: Do you have the two packages in the same file like you have presented
: below? I guess they aren't since you have '1;' just before the declaration
: of the second package. If they live in two different files obviously that
: 'use Object::SubObj' is mising, see the code below. Object doesn't know
: about Object::SubObj if you don't tell it about it.
:
: So how exactly your files are organized?
Actually, that '1;' was a mistake. Yes, they are both in the same
file, and no, that '1;' is not really there.
: > I have a module with some code like this:
: >
: > package Object;
:
: => use Object::SubObj;
:
: > sub new {
: > my $class = shift;
: > return bless {}, $class;
: > }
: >
: > sub SubObj {
: > Object::SubObj->new();
: > }
: >
: > package Object::SubObj;
: > sub new {
: > my $class = shift;
: > return bless {}, $class;
: > }
: >
: > I have a script with code like this:
: >
: > $obj = Object->new();
: > $sub = Object->SubObj();
: >
: > Now, I can spot the potential problem. Under regular perl, this
: > methodology works fine, has been for several years (that's how
: > long we've had this module). Under mod_perl, this setup works
: > fine. It has for several years. However, on a recent new system,
: > I decided that this module needed to be preloaded in a startup.pl-type
: > script, like so:
: >
: > use Object;
: >
: > Nothing fancy. When the script above is called in mod_perl now,
: > it goes into an endless loop. Apparently, the $obj->SubObj(); call
: > results in it calling itself continuously, as Object::SubObj is
: > mapped to the function, not the class. To fix it, I did:
: >
: > sub SubObj {
: > 'Object::SubObj'->new();
: > }
: >
: > Why does this work under regular perl and under mod_perl, but under
: > mod_perl with this module preloaded, perl has a problem deciding
: > whether this is a function or a class? Is this a bug in mod_perl's
: > methodology or is it just another case of mod_perl catching bad
: > programming practice (no comments about the programming practice;
: > I only fix it)?
: >
: > Is this in the Perl Guide? If so, I missed it. If not, would it
: > be appropriate to add it as an example? This was a challenge to
: > track down, especially with the way it affected the system (one
: > gets very scared running code he knows is going into an endless
: > loop in a location he can't determine).
: >
: > * Philip Molter
: > * Data Foundry International
: > * http://www.datafoundry.net/
: > * [EMAIL PROTECTED]
: >
:
:
:
: _____________________________________________________________________
: Stas Bekman JAm_pH -- Just Another mod_perl Hacker
: http://stason.org/ mod_perl Guide http://perl.apache.org/guide
: mailto:[EMAIL PROTECTED] http://apachetoday.com http://jazzvalley.com
: http://singlesheaven.com http://perlmonth.com perl.org apache.org
:
* Philip Molter
* Data Foundry International
* http://www.datafoundry.net/
* [EMAIL PROTECTED]