我正在使用Storable的dclone()
來創建各種複雜對象的副本,這些對象是使用附加的Log4perl記錄器進行自我記錄的。當它遇到記錄器對象時存儲抱怨,因爲它包含CODE
參考。當我打開相應的選項序列化代碼裁判,我得到在克隆過程中的不祥警告深入克隆對象和Log4perl
Useless use of a constant (???) in void context at (eval 1668) line 16.
Useless use of a constant (???) in void context at (eval 1668) line 10.
,並克隆對象的記錄器不再起作用。
我正在克隆目的是由其他對象,並且所述記錄器可以被附加到對象,它的部件,及其子組件等。
理想我想克隆過程忽略任何記錄器對象。
1)是否有Perl模塊可以(更適合)執行此任務?理想情況下,我希望能夠控制遞歸複製,以便只複製非記錄器的對象或數據片段。
2)...還是我最好從我的對象中取出對象的自我記錄能力(sob!),並創建沒有附加到對象的記錄器?
任何意見或見解,將不勝感激。
問題的一部分是我昨天在試驗可能的解決方案時無法獲得Storable的掛鉤。我現在已經實現了鉤子來檢查記錄器對象並刪除它們(如果它們存在的話)......它看起來像是一個討厭的hacky解決方案,但也許我會忍受它。 :S – 2011-03-24 18:50:31
我不知道是否適用「討厭」,但它有點破解。 OTOH,鉤子是有原因的,所以它是一個黑客,但不是一個雜湊。 – 2011-03-24 19:27:42
我猜,比一個爛泥好一點! ; ^) – 2011-03-25 04:07:34