這是一個令我感到困惑的問題,我的同事有。而且我也無法找出原因。Perl不會在對象銷燬時調用DESTROY的情況?
簡短版本是在他寫的一個類中定義了DESTROY
析構函數/方法,DESTROY
在對象被銷燬時沒有被調用。它不會在我們認爲物體超出範圍的地方被召喚。雖然我們認爲可能在某處有一個懸而未決的引用,但它在腳本出口處也不會被調用。我們通過調試print
語句來散佈類和腳本,甚至在END
塊中明確地調用了它,以驗證我們沒有將它放入錯誤的名稱空間。 (我們沒有,明確的電話觸發了預期的所有print
報表。)
所以我對此感到困惑,並且對答案和他一樣感興趣。什麼情況可能導致這種行爲?有問題的腳本正在退出乾淨 - 沒有電話POSIX::_exit
或類似的東西。這裏唯一的「變量」是類正在使用Class::MethodMaker
來定義一些訪問器和構造函數。但是,Class::MethodMaker
文檔中沒有提及與(或覆蓋)類DESTROY
方法的交互。
有沒有可能發佈代碼?我已經使用了C :: MM,並沒有看到這種行爲。所有人都在尋找相同的起點來試圖弄清楚發生了什麼,這將是有益的。 –