perl / mason:为handler.pl中的全局变量赋值

时间:2011-11-06 13:26:57

标签: perl mason

是否可以在handler.pl

中为全局变量赋值

我需要为handler.pl中的全局变量赋值,并从Mason组件中获取值。

我试过这种方式:

的httpd.conf

...
PerlRequire handler.pl
...

handler.pl

...
our $x = 'test';
...

something.mas

...
<h1><% $x %></h1>
...

但它不起作用,它不会返回<h1>test</h1>但仅<h1></h1>因为$x未定义。我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:1)

是的,但您必须设置

PerlSetVar MasonAllowGlobals $x 

在httpd.conf中,或在handler.pl中包含

allow_globals => [ '$x' ]

在您的apache处理程序定义中,或在组件运行的HTML :: Mason :: Commands包中声明它:

package HTML::Mason::Commands;
use vars '$x';

最后一个选项也是如何在所有组件中提供其他Perl模块:

package HTML::Mason::Commands;
use Data::Dumper;
use URI;
...

请参阅http://www.masonhq.com/?FAQ:Components#h-can_i_use_globals_in_components_