理解Perl使用结构体

4

我试图理解一些混乱的Perl代码,其中有很多模块使用了each。我们最终使得所有的内容都非常交织在一起,在某些情况下甚至会使用全局变量而不使用定义它们的方式(例如A使用B,B使用C,C定义一个变量X,A使用它)。以这种方式重构代码是非常困难的。有没有方法可以帮助我理解代码的结构以及谁在使用什么?值得一提的是,我们已经使用了strict。


1
你最后一句话让我微笑了。如果你每天都要处理它,这并不好玩,但是一旦你足够理解它,重建它可以很有趣。 - simbabque
2
这些是use还是require语句?这些模块真的是模块(带有其中package定义的.pm文件),还是你有很多在main命名空间下的类似于require 'foo.pl'的东西? - simbabque
3
还有Devel::NYTProf,它可以帮助了解谁调用了谁。 - simbabque
@eric 如果您发现此处提供的答案有帮助,请点赞和/或标记为已接受,以便其他具有相似问题的用户受益。 - Wayne Booth
1个回答

0

很抱歉,但没有Perl模块或其他普遍可用的脚本可以做到你想要的。我曾经遇到过类似的问题,不得不编写自己的脚本(可能使用NYTProf等)来解析每个模块,然后在外部分析收集的数据。

除此之外,你只能注释掉所有的“use”语句,然后逐个重新引入,在引入任何模块之前完成这个过程。这是一项繁琐的工作,但你会对自己的代码有更深入的了解。

当你开始进行更改时,要准备好意外的失败,因为当你有像这样的循环使用语句时,编译取决于引入代码的顺序 - 这意味着完全不相关的模块中可能会出现编译错误。

祝你好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接