我有一个庞大的 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;" 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!