无论出于何种原因,我的同事(可能是我过去)已经导入了我们不会用于我们项目的模块。很糟糕的是,导入甚至不存在的模块。
在Perl中,您可以这样说:
use Socket;
gethostname("DERP");
很难从该函数中判断出它与套接字模块有关。
是否存在任何我不知道的Perl程序或Perl的某些功能可以告诉您是否已将膨胀导入脚本?
答案 0 :(得分:4)
这就是我总是明确列出进口的原因。例如use Socket qw( gethostname );
或use Foo qw( );
(后者不会导入任何内容而非默认值。)
一种方法是逐个文件并添加这些导入列表,然后停止加载带有空导入列表的模块,文件中不存在其包名称。
答案 1 :(得分:3)
使用分析器查看正在使用的模块。从中找出哪些不是。适合我:
cpanm Devel::DProf
或ubuntu:apt install libdevel-dprof-perl
),请安装Devel :: DProf模块。较新的分析器也存在,即Devel::NYTProf
#!/use/bin/perl
更改为#!/use/bin/perl -d:DProf
,然后运行它。这将在您当前的目录中生成tmon.out
文件dprofpp -aO9999
分析tmon.out。这将输出所有已执行的潜艇,包括每一行的模块名称。注意:如果有条件地调用sub(例如在if
- 块内),如果条件始终为false,则探查器将不会列出它。它有助于获得具有完整代码覆盖率的测试套件并在分析模式下运行。