perl 提取信息 讲解下程序

#!/usr/bin/perlrequire'jcode.pl';useText::ChaSen;Text::ChaSen::getopt_argv('chasen-pe... #!/usr/bin/perl
require 'jcode.pl';
use Text::ChaSen; 
Text::ChaSen::getopt_argv('chasen-perl','-c');

my $dir = "data";            
opendir(DIR,$dir);
@files = sort grep (!/^\./,readdir(DIR));
closedir(DIR);
foreach my $file (@files){
&readfile($dir,$file);

}

sub readfile{
my ($dir,$file) = @_;      
open(FF,$dir."/".$file) or die "$file not found";
my %count = ();
while(<FF>){
chomp;
my $line = $_;
my $eucline = &jcode::euc($line);
my $code = Text::ChaSen::sparse_tostr($eucline);
my @a = split(/[\r\n]/,$code);
for(my $i=0;$i<@a;$i++){
my @w = split(/[\s]+/,$a[$i]);
if ((0<$w[3])&&($w[3]<=40)&&($w[3] != 19)){
$count{$w[0]}++;
}
}
展开
 我来答
laohu2862
推荐于2016-11-17 · TA获得超过1246个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:650万
展开全部
#!/usr/bin/perl
require 'jcode.pl';#引用jcode.pl这个脚本中的内容,可以大致理解为和c中的include差不多,也就是使用jcode.pl中的代码
use Text::ChaSen; #使用Text这个包中的ChaSen
Text::ChaSen::getopt_argv('chasen-perl','-c');
my $dir = "data";
    
opendir(DIR,$dir);#打开文件目录句柄                       
@files = sort grep (!/^\./,readdir(DIR)); #读取目录内容,并且找出其中非. 和..的文件名称,其中.和 ..表示当前目录和上一级目录,然后对打开的目录内文件名排序
closedir(DIR); #关闭文件句柄                           
foreach my $file (@files){                   
 &readfile($dir,$file); #调用readfile函数
}
sub readfile{    
 my ($dir,$file) = @_;#将传递进入的参数 目录名称和文件名保存到$dir 和$file两个变量
 open(FF,$dir."/".$file) or die "$file not found";#打开目录和文件名组合成的文件,如果打开失败则提示文件没有找到
 my %count = ();
 while(<FF>){
  chomp;                 
                my $line = $_;
         my $eucline = &jcode::euc($line); #这个因为是引用的jcode.pl中的函数,不清楚是什么功能
                my $code = Text::ChaSen::sparse_tostr($eucline);#这个函数我没有用过,不清楚是什么功能,不过看上去应该是将什么东西转换为字符串
                my @a = split(/[\r\n]/,$code); #将得到的字符串按照换行进行分割并存到数组
                for(my $i=0;$i<@a;$i++){
             my @w = split(/[\s]+/,$a[$i]);#将按行分割之后的信息再按照空格进行分割,也就是得到每列的信息
             if ((0<$w[3])&&($w[3]<=40)&&($w[3] != 19)){#如果第四列所得到的数组大于0且小于40并且不等于19,那么以$w[0]为键的hash就加1
                 $count{$w[0]}++;
             }
       } 
}

因为不清楚其中有几个函数的功能,所以不好意思有的地方就不是太清晰,不过如果你能补充那几个函数的功能,我想这个脚本还是很好解释的。
不过看上去@w应该属于文件信息,猜测是统计文件大小小于40字节且大于0字节并且不为19字节的文件有哪些。不过如果能够告知一下那几个函数功能就更清楚啦。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式