我被指派去挑选一个用一些旧的 Perl Legacy 代码编写的 web 应用程序,让它在我们的服务器上运行,以便以后扩展它。代码是 10 年前由一个孤独的自学开发人员编写的......
代码中有一些奇怪的东西 - 他们不怕do lib-param.pl
在第一行,然后在文件 do /lib-pl/lib-param.pl
- 这当然是一个不同的文件。
包括a.pl
与方法 b()
和 c()
及以后包括 d.pl
与方法 c()
和 e()
似乎也很流行......包似乎是未知的,所以你稍后会在代码中的某个地方找到 &c() 。
有趣的问题:
我倾向于遍历每个文件并重构它,但不允许这样做 - 只有严格的最低限度才能使代码正常工作。 (但由于代码从来没有
uses strict
,我不知道我是否会......)
最佳答案
不使用 strict 是一个错误——不要继续它。把东西移到 d.pl
至 D.pm
(或者可能是一个更好的名称),如果代码是程序性的,则使用 Sub::Exporter
将这些 subs 重新放入调用包中。 strict
是词法的,你可以只为一个包打开它。比如你的新package D;
.要找出正在调用的代码,请使用 Devel::SimpleTrace。
perl -MDevel::SimpleTrace ./foo.pl
现在任何警告都将伴随着完整的积压日志——在代码周围散布警告并运行它。
我认为应该从这里删除 MySQL 问题。模式表映射与 perl 无关,在这个问题上似乎不合适。
关于perl - Perl 代码中的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364713/