我试图理解一些混乱的Perl代码,其中有很多模块使用了each。我们最终使得所有的内容都非常交织在一起,在某些情况下甚至会使用全局变量而不使用定义它们的方式(例如A使用B,B使用C,C定义一个变量X,A使用它)。以这种方式重构代码是非常困难的。有没有方法可以帮助我理解代码的结构以及谁在使用什么?值得一提的是,我们已经使用了strict。
我试图理解一些混乱的Perl代码,其中有很多模块使用了each。我们最终使得所有的内容都非常交织在一起,在某些情况下甚至会使用全局变量而不使用定义它们的方式(例如A使用B,B使用C,C定义一个变量X,A使用它)。以这种方式重构代码是非常困难的。有没有方法可以帮助我理解代码的结构以及谁在使用什么?值得一提的是,我们已经使用了strict。
很抱歉,但没有Perl模块或其他普遍可用的脚本可以做到你想要的。我曾经遇到过类似的问题,不得不编写自己的脚本(可能使用NYTProf等)来解析每个模块,然后在外部分析收集的数据。
除此之外,你只能注释掉所有的“use”语句,然后逐个重新引入,在引入任何模块之前完成这个过程。这是一项繁琐的工作,但你会对自己的代码有更深入的了解。
当你开始进行更改时,要准备好意外的失败,因为当你有像这样的循环使用语句时,编译取决于引入代码的顺序 - 这意味着完全不相关的模块中可能会出现编译错误。
祝你好运。
use
还是require
语句?这些模块真的是模块(带有其中package
定义的.pm文件),还是你有很多在main
命名空间下的类似于require 'foo.pl'
的东西? - simbabque