我有一个庞大的 java 代码库(超过 10,000 个 java 类),它广泛使用了 CORBA(虽然没有关于它的使用的文档)。
作为了解 CORBA 用法的第一步,我决定扫描整个代码库并提取/打印包含模式“org.omg.CORBA”的独特行。这些通常在导入语句中(例如导入 org.omg.CORBA.x.y.z)。
我是 Perl 的新手,想知道是否有一种方法可以在 Windows 操作系统上提取这些详细信息。我需要能够扫描所有具有 Java 类的文件夹(和子文件夹)。
请您参考如下方法:
您可以使用 File::Find在一行中:
perl -MFile::Find -lwe "
find(sub { if (-f && /\.java$/) { push @ARGV,$File::Find::name } },'.');
while(<>) { /org.omg.CORBA/ && $seen{$_}++; };
print for keys %seen;"
请注意,这一行使用了 Windows 所需的双引号。
这将在当前目录中递归搜索扩展名为 .java
的文件,并将它们添加到 @ARGV
数组中。然后我们使用菱形运算符打开文件并搜索字符串 org.omg.CORBA
,如果找到,则将该行作为关键字添加到 %seen
hash,这将有效地删除重复项。最后一条语句打印出散列中的所有唯一键。
在脚本形式中它看起来像这样:
use strict;
use warnings;
use File::Find;
find(sub { if (-f && /\.java$/) { push @ARGV,$File::Find::name } },'.');
my %seen;
while(<>) {
/org.omg.CORBA/ && $seen{$_}++;
}
print "$_\n" for keys %seen;"