У нас есть на работе скрипт Perl, который используется для обслуживания. Мне нужно было изменить его, чтобы обрабатывать больше задач. Проблема в том, что скрипт скомпилирован и исходники давно утеряны.
Я пытался использовать B ::Deparse, чтобы воссоздать файл, но Deparse не идеален, и вывод неисправен (и содержит очень большие ~5000 строк депарсированного кода ).
Прочитав депарсированный код, я обнаружил, что мне нужно изменить одну функцию. Скомпилированный скрипт загружает простой -модуль текстового скрипта, поэтому я изменил модуль, чтобы переопределить функцию и выполнить задачу, которую мне нужно выполнить. Проблема сейчас в том, что я не могу получить доступ к основным переменным сценария "мои".
Вот пример:
# main.pl
my $a = 1;
sub call_me {
print "unmodified";
}
use MOD;
call_me;
MOD.pm
package MOD;
main::{'call_me'} = sub {
print "\$main::a = $main::a\n";
}
Результатом является :" $main::a =
" вместо получения реального значения.
Заранее спасибо.