有没有一个模块可以搜索多余的代码?

sid*_*com 5 optimization perl module

有没有一个模块,可以找到不需要的代码?
作为示例,脚本不需要运行脚本的代码:

#!/usr/bin/env perl
use warnings;
use 5.12.0;
use utf8;
binmode STDOUT, ':utf8';
use DateTime;
use WWW::Mechanize;

sub my_print {
    my ( $string, $tab, $color ) = @_;
    say $string;
}

sub check {
    my $string = shift;
    return if length $string > 10;
    return $string;
}

my_print( 'Hello World' );
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 4

不是绝对的。众所周知,如果不实际执行,Perl 就很难分析,以至于编译稍后运行的 Perl 程序实际上需要包含一个 perl 解释器的副本!因此,针对 Perl 的代码分析工具非常少。你可以做的是使用探查器,但这有点矫枉过正(正如我提到的,需要实际执行程序。我喜欢Devel::NYTProf。这会吐出一些 HTML 文件,显示 eaqch 行或子程序被执行了多少次在那里花费了多少时间,但这仅适用于程序的特定执行。它将允许您看到 WWW::Mechanize 已加载但从未被调用,但它无法告诉您是否warningsbinmode有任何对执行力的影响。

  • Devel::NYTProf 是完成这项工作的一个很好的工具,但要扩展这句话,“...但这仅适用于程序的特定执行。”:给定的运行可能不会遵循所有逻辑路径,因此,那些未遵循的路径不会显示在配置文件中。然而,这并不意味着它们无法到达——只是在特定的运行中没有到达它们。 (3认同)