我有以下包裹:
package My::Content;
our $new = undef;
our $content = '<header>content-start'.$new.'content-end</header>';
1;
以下脚本:
use My::Content;
use warnings;
use strict;
$My::Content:new = '++test++';
print $My::Content:content;
但结果是'content-startcontent-end'。据我所知,包变量$content
在编译时设置,$ new值被视为undef,无论后来的变量更新如何。是否有可能以某种方式在$ content计算之前设置$ new值?
结果我想看'content-start ++ test ++ content-end'
答案 0 :(得分:2)
不,但是让content
成为一个函数,它可以在使用时重新计算。
package My::Content;
our $new = undef;
sub content { '<header>content-start'.$new.'content-end</header>' }
use My::Content;
use warnings;
use strict;
$My::Content:new = '++test++';
print My::Content:content;