1

我试图从一个有BEGIN块的 Perl 模块初始化一个全局变量,但我无法让它工作。

这是 Perl 模块

Package A::B;
our $var;

BEGIN{
  $var ||= "/some/default/path";

  #create/access files/folders in $var
}

这是我的 CGI 脚本

use A::B;
$A::B::var = "/correct/path";

#error返回是因为 $var 不是正确的路径

BEGIN在将正确路径分配给 之前,正在执行该块$var。有没有办法解决这个问题而不必从BEGIN块中删除代码?

4

1 回答 1

4
BEGIN { $A::B::var = "/correct/path" }
use A::B;

这个答案让我不满意,但考虑到您的 A::B 的设计方式,我想不出任何其他方式。理想情况下,一个模块不取决于谁在使用它或使用它的频率,但这个模块实际上只能使用一次。

于 2013-03-16T01:26:26.643 回答