From: Gordon H. <go...@ac...> - 2001-01-08 19:34:22
|
On Mon, 8 Jan 2001, Martin Sarajervi wrote: > * Gordon Henriksen (go...@ac...) wrote: > > On Mon, 8 Jan 2001, Martin Sarajervi wrote: > > > > > I'm using autohandler in > > > /www-root in this autohandler I use a head method, where I > > > have some variables that I have in <%shared> tag. > > > but when I get to: > > > /www-root/webcam the head method doesn't catch the variable > > > and I get the "requires explict package name" error. > > > > > > How can I make this work? > > > > <%shared> sections share variables only between the perl/init/cleanup > > sections, subcomponents, and methods a single Mason component. They are > > implemented using Perl's closures (anonymous subroutines which carry > > my-vars from their context). > > > > To share variables between an autohandler and the components within its > > directory, you could use a global variable, a Perl module which all your > > components load, some <%methods> on the autohandler (which the child > > components will inherit), or you could pass them down from the autohandler > > to the children as arguments. > > > > hmm.. > Maybe stupid: how do I use/set a global variable? Just like this: <%init> $Package::global_var = "foo"; $m->out($Package::global_var); </%init> Standard Perl fare. Or you can do this: # in your handler.pl: $parser = new HTML::Mason::Parser( ... allow_globals => [qw($global_var)], ... ); And just reference $global_var in your components. -- Gordon Henriksen go...@ac... |