我想缩小perl脚本,以便我可以检测几乎完全相同的perl脚本,这些脚本只有行注释,空行等不同.我有一个预先构建的脚本来进行这种缩小?如果是这样,我将能够自己校验和突出显示相同的文件.
不完全缩小,但您可以使用B::Deparse编译Perl脚本,然后将其反编译回Perl.
你可以区分结果.
一个简单的命令行示例如下:
david@Workstation:comp # perl -MO=Deparse 1.pl > a.pl
1.pl syntax OK
david@Workstation:comp # perl -MO=Deparse 2.pl > b.pl
2.pl syntax OK
david@Workstation:comp # diff a.pl b.pl
david@Workstation:comp # diff 1.pl 2.pl
3c3,5
< say "Hello";
---
>
>
> say "Hello";
david@Workstation:comp #
Run Code Online (Sandbox Code Playgroud)
Code :: CutNPaste查找重复的Perl代码
use Code::CutNPaste;
my $cutnpaste = Code::CutNPaste->new(
dirs => [ 'lib', 'path/to/other/lib' ],
renamed_vars => 1,
renamed_subs => 1,
);
my $duplicates = $cutnpaste->duplicates;
foreach my $duplicate (@$duplicates) {
my ( $left, $right ) = ( $duplicate->left, $duplicate->right );
printf <<'END', $left->file, $left->line, $right->file, $right->line;
Possible duplicate code found
Left: %s line %d
Right: %s line %d
END
print $duplicate->report;
}
Run Code Online (Sandbox Code Playgroud)