2013-03-16 143 views
0

我想從一個Perl模塊中初始化一個全局變量,但是我無法設法讓它工作。在Perl模塊(用BEGIN塊)初始化全局變量包括

這是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塊中刪除代碼?

回答

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

這個答案對我來說並不令人滿意,但我想不出任何其他方式,因爲你的A :: B是如何設計的。理想情況下,模塊不依賴於誰在使用它或多久,但該模塊只能使用一次。

+0

這個伎倆!謝謝。 我這樣做是因爲$ var確定數據庫的位置,這可能因系統而異 – 2013-03-16 01:40:04