我们有一个用于执行维护的 Perl 脚本。我需要对其进行修改以处理更多任务。问题是脚本已编译,并且源代码很久以前就丢失了。
我尝试使用 B::Deparse 来重新创建文件,但 Deparse 并不完美,并且输出被破坏(以及非常大的 ~5000 行 deparsed 代码)。
在阅读了解析后的代码后,我发现我需要修改一个函数。编译后的脚本会加载一个纯文本脚本模块,因此我更改了模块以覆盖该函数并执行我需要它执行的任务。现在的问题是我无法访问主脚本“我的”变量。
这是一个例子:
# 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 =
”而不是获得真正的价值。
提前致谢。