我曾經在本板回文推荐過 Devel::FindRef 這個 module
#1EjC2SBW https://www.ptt.cc/bbs/Perl/M.1320468636.A.2E0.html
它可以用來查詢指定的變數目前被誰 reference 到,
對於要抓 memory leak 的時候蠻方便的~
不過自從 perl 5.21.6 之後, 這一個 module 就壞掉不能用了,
然後作者 Marc Lehmann 對 perl core team 的改版非常不爽,
大吵一架以後看起來沒打算再修的樣子, 我等了很久很久以後,
決定自己動手修一修..
https://github.com/CindyLinz/Perl-Devel-FindRef
這個修改版, 我目前自己在 linux arch 64 上測試過 5.8.9 ~ 5.26.0
的每個主要的 perl 發行版本, 希望大家有空的話也拿去用用看,
看有沒有什麼 corner case 會出現不希望發生的問題再跟我說...
我已經把這個更新送給作者了, 他說他會看一看然後 probably
會整合生一個更新版出來, 不過不能承諾什麼時候會作.. ^^|
目前有個已知 5.21.6 以後會跟 5.21.5 以前不一樣的行為是:
主檔裡面定義的 sub 在舊版會回報為 &main::sub_name,
而新版會回報為 %main::main:: 裡面的 sub_name 這個 entry...
不過這個我覺得可以忍受有點懶得改.. ^^|