Спасибо, час, очень полезный код.
Как примечание для будущих пользователей вашего кода с perl> 5.12:
Я использовал его в моем pdl2 .perldlrc, чтобы найти лексические переменные (например, команду 'y' в отладчике), и у меня было это предупреждение:
load_rcfile: загрузка
/ homes / pmg / .perldlrc определено (% хеш) устарело в (eval 254) строке 36.
(Maybe you should just omit the defined()?)
Из perldoc -f определено
Использование определенных по агрегатам (хэшам
и массивы) не рекомендуется. Раньше
сообщите ли память для этого
агрегат когда-либо был выделен.
Такое поведение может исчезнуть в будущем
версии Perl. Вы должны вместо
используйте простой тест для размера:
> if (@an_array) { print "has array elements\n" }
> if (%a_hash) { print "has hash members\n" }
Чего я не понимаю, так это почему он жаловался только на определенный хеш, а не на массив?