Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 检查是否使用过导入的模块_Perl - Fatal编程技术网

Perl 检查是否使用过导入的模块

Perl 检查是否使用过导入的模块,perl,Perl,无论出于什么原因,我的同事(可能还有过去的我)已经导入了我们不用于项目的模块。很糟糕,甚至不存在的模块正在被导入 在Perl中,您可以这样说: use Socket; gethostname("DERP"); 从这个函数很难判断它是绑定到套接字模块的 是否存在我不知道的任何程序或Perl的某些功能可以告诉您是否已将膨胀导入脚本?使用探查器查看正在使用的模块。从中找出哪些不是。为我工作: 如果没有(cpanm-Devel::DProf或如果ubuntu:apt Install libdevel

无论出于什么原因,我的同事(可能还有过去的我)已经导入了我们不用于项目的模块。很糟糕,甚至不存在的模块正在被导入

在Perl中,您可以这样说:

use Socket;
gethostname("DERP");
从这个函数很难判断它是绑定到套接字模块的


是否存在我不知道的任何程序或Perl的某些功能可以告诉您是否已将膨胀导入脚本?

使用探查器查看正在使用的模块。从中找出哪些不是。为我工作:

  • 如果没有(
    cpanm-Devel::DProf
    或如果ubuntu:
    apt Install libdevel-DProf perl
    ),请安装Devel::DProf模块。还存在更新的探查器,即
    Devel::NYTProf
  • 更改
    #/使用/bin/perl
    #/在程序中使用/bin/perl-d:DProf
    ,然后运行它。这将在当前目录中生成一个
    tmon.out
    文件
  • 运行
    dprofp-aO9999
    以分析tmon.out。这将输出所有已执行的SUB,包括每行上的模块名称

注意:如果有条件地调用sub(例如在
if
-块中),如果条件始终为false,探查器将不会列出它。拥有一套完整代码覆盖率的测试套件,并在评测模式下运行,这会有所帮助。

使用评测器查看正在使用的模块。从中找出哪些不是。为我工作:

  • 如果没有(
    cpanm-Devel::DProf
    或如果ubuntu:
    apt Install libdevel-DProf perl
    ),请安装Devel::DProf模块。还存在更新的探查器,即
    Devel::NYTProf
  • 更改
    #/使用/bin/perl
    #/在程序中使用/bin/perl-d:DProf
    ,然后运行它。这将在当前目录中生成一个
    tmon.out
    文件
  • 运行
    dprofp-aO9999
    以分析tmon.out。这将输出所有已执行的SUB,包括每行上的模块名称

注意:如果有条件地调用sub(例如在
if
-块中),如果条件始终为false,探查器将不会列出它。有一套完整代码覆盖的测试套件,并在评测模式下运行,这很有帮助。

这就是我总是显式列出导入的原因。e、 g.
使用套接字qw(gethostname)
使用Foo-qw()(后者不导入任何内容,而导入默认值。)


一种方法是逐个文件添加这些导入列表,然后停止加载带有空导入列表的模块,因为该文件中没有提到其包名。

这就是为什么我总是显式地列出导入。e、 g.
使用套接字qw(gethostname)
使用Foo-qw()(后者不导入任何内容,而导入默认值。)


一种方法是逐个文件添加这些导入列表,然后停止加载带有空导入列表的模块,因为该文件中没有提到其包名。

对于Python,这在删除导入并运行测试套件中得到了回答。这个问题的答案在Perl和Python中非常不同——这两种语言是完全不同的。请澄清您想要这两种语言中的哪种语言的答案,以及相应的标签。如果有必要,可以问另一种语言的第二个问题。@amon done,这非常令人困惑。对于Python,这在删除导入并运行测试套件中得到了回答。这个问题的答案在Perl和Python中非常不同——这两种语言是完全不同的。请澄清您想要这两种语言中的哪种语言的答案,以及相应的标签。如果有必要,可以问另一种语言的第二个问题。@amon done,这非常令人困惑。更改shebang可能不是一个好主意(除非程序不是直接执行的)。只需调用
perl-d:DProf foo.pl
或设置env var
PERL5OPT=“$PERL5OPT-d:DProf”
是侵入性较小的解决方案。不推荐使用DProf。请使用NYTProf!更改shebang可能不是一个好主意(除非程序没有直接执行)。只需调用
perl-d:DProf foo.pl
或设置env var
PERL5OPT=“$PERL5OPT-d:DProf”
是侵入性较小的解决方案。不推荐使用DProf。请使用NYTProf!