+ -
当前位置:首页 → 问答吧 → 请教高手,这个程序怎么修改可以实现提取出所有的匹配行?

请教高手,这个程序怎么修改可以实现提取出所有的匹配行?

时间:2010-12-04

来源:互联网

本帖最后由 doudou27777 于 2010-12-04 14:56 编辑

#!/usr/bin/perl
use strict;
use warnings;
my %hash;

die "usage: perl search.pl source.file test.file\n" if @ARGV==0;
open IN,$ARGV[0] or die $!;
while(<IN>){
$hash{$1}=$_ if/\s+(\S+)\:\d+\s+/;
}
close IN;

open IN,"$ARGV[1]";
while(<IN>){
chomp;
print $hash{$_} if (exists $hash{$_});
}
close IN;
source and test.rar (426 Bytes)
下载次数: 0
2010-12-04 14:54


附件中是需要进行匹配的文件,想要实现的是找出test文件中和source第一列相匹配的所有行,而我上面的程序只能找到重复序列的最后一个,而找不到所有的匹配行。
请高手帮我改改程序,可以实现所有的匹配行出来。谢谢!

作者: doudou27777   发布时间: 2010-12-04

对应 key 下想保存多个值可以用 arrayref。还有你下面的说明不知所云,也没数据

while(<IN>){
    push @{$hash{$1}}, $_ if/\s+(\S+)\:\d+\s+/;
}

作者: zhlong8   发布时间: 2010-12-04