perl 解析(希望能逐行解释,谢谢)

2024-11-17 00:27:48
推荐回答(1个)
回答(1):

open (IN, "testset_2014052314392273headset.dat"宽岁); # 打开文件
@lines = ; 弊巧轿#将文件内容读入到数组。
close IN; #关闭文件
@modLines = (); #初始化数组
%done = (); #初始化哈希表
for (reverse @lines) #先将数组内容倒序,然后循环读入到内置变量$_ 

    chomp; #去掉$_内容末尾的换行
    if (/^\s*([\d\.]+)\s+([\d\.]+)\s+\"(.*)\"/)#正则匹配 
    { 
        $from = $1; # $1是匹配的开头的多个数字或. 
        $to = $2;  # $2是匹配第二次出现的多个数字或.
        $utt = $3; # $3是匹配引号中的字符串
        if (defined $done{$utt}) #如果$done{$utt}有赋租肆值,则next继续循环, 否则赋值1,这样就可以将文件内容去除重复内容。
        { 
            next; 
        }
        $done{$utt} = 1;
    } 
    push @modLines, $_; # 将$_存放到 @modLines
}
open (OUT, ">modify_testset_2014052314392273headset.dat");# 将修改后的内容写入到">modify_testset_2014052314392273headset.dat"里
for $l (reverse @modLines) { print OUT "$l\n";}close OUT;