Global? There's no need to use a global here. You only ever reference %CFG *in* the package...
so just make it package scoped - it'll act like a static variable and persist. (scope it
with 'my' and remove it from the export)
You can always get the value you want with a call to MyConfig::cfg
David
-----Original Message-----
From: Tosh Cooey [mailto:tosh@1200group.com]
Sent: Thursday, January 14, 2010 10:45 AM
To: modperl@perl.apache.org
Subject: A ghost in the machine?
Hi to everyone!
I'm trying to find out if I'm passing objects properly under mod_perl
because something is not working as I expect.
index.pl
########
use MyConfig;
my $vars = { config => &cfg };
MyConfig.pm
###########
package MyConfig;
use strict;
use Exporter;
use vars qw(@ISA @EXPORT %CFG );
use ClientConf;
@ISA = qw(Exporter);
@EXPORT = qw(%CFG &cfg);
%CFG = { global vars... };
sub cfg {
my $CFG{$clientID} = new ClientConf;
return $CFG{$clientID};
}
1;
Under normal PERL $vars->{config} is a MyConfig object. Under mod_perl
nothing is returned. Debugging with "print" statements in &cfg shows me
that "ref $CFG{$clientID}" is ClientConf, the object is there, but upon
return it just disappears.
I have other functions which "return new MyUser()" and these work
perfectly, so I'm thinking that the problem lies with the global
variable "$CFG" and that something which I think should be happening is
NOT happening.
I'm flummoxed...
Thank-you for any insights!
Tosh
--
McIntosh Cooey - Twelve Hundred Group LLC - http://www.1200group.com/
|