代码之家  ›  专栏  ›  技术社区  ›  Konerak

Perl代码中的依赖关系

  •  4
  • Konerak  · 技术社区  · 14 年前

    我被指派去挑选一个用一些旧的Perl遗留代码编写的web应用程序,让它在我们的服务器上工作,以便以后扩展它。这段代码是10年前由一位自学成才的孤独开发人员编写的。。。

    代码里有奇怪的东西-他们不怕 do lib-param.pl 在第一行,然后在文件中 do /lib-pl/lib-param.pl -当然是另一个文件。

    包括 a.pl 用方法 b() c() 后来包括 d.pl c() e() 似乎也很受欢迎。。。包似乎是未知的,所以您只需找到&在代码中的某个地方。

    有趣的问题:

    • MySQL数据库和表也是这样吗?它能显示哪些文件使用了哪些模式/表吗?
    • 有没有一个IDE知道调用了哪个c()——a.pl中的那个还是d.pl中的那个?
    • 你将如何开始尝试理解代码?

    我倾向于遍历每个文件并重构它,但不允许这样做-只有 严格最小值 uses strict ,我不知道我是否会……)

    2 回复  |  直到 14 年前
        1
  •  4
  •   Evan Carroll    14 年前

    d.pl D.pm (或者是一个更好的名字),如果代码是过程性的,那么 Sub::Exporter 把那些潜艇放回呼叫包里。 strict 是词法的,你只需要打开一个包就可以了。比如你的新朋友 package D; . 要找出要调用的代码,请使用Devel::SimpleTrace。

    perl -MDevel::SimpleTrace ./foo.pl
    

    现在,任何警告都将伴随一个完整的备份日志——在代码周围散布警告并运行它。

        2
  •  1
  •   Paul Nathan    14 年前

    我会写一个实用程序来扫描所有 sub 他们住在哪个档案里;然后我会写一个实用程序给我一个所有函数调用的列表,以及它们来自哪个文件。

    对于许多情况,在编写良好的代码中,这将足以帮助我。。。