2011-11-06 88 views
0

是否可以將值賦給全局變量handler.plperl/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

是的,但你必須設置

PerlSetVar MasonAllowGlobals $x 
在httpd.conf

,或者handler.pl包括

allow_globals => [ '$x' ] 

在Apache處理程序定義,或在HTML中聲明它:: Mason :: Commands包中運行的組件:

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

這最後一個選項也是如何讓其他Perl模塊可用ES在所有組件:

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

參考http://www.masonhq.com/?FAQ:Components#h-can_i_use_globals_in_components_