在大文件中照小文件对应项的剩余部分并输出

 1 #!/usr/bin/perl
 2 
 3 use strict;
 4 use warnings;
 5 
 6 #####input#####
 7 my $all = $ARGV[0]; my $part_file = $ARGV[1];
 8 
 9 
10 
11 #####mian#####
12 
13 my $all_in = &store($all);
14 my $part =&store($part_file);
15 
16 &check($all_in,$part);
17 
18 
19 
20 #####sub#####
21 
22 sub check
23 {
24      my ($a_arr,$p_arr)= @_;my %p=%{$p_arr};my %a=%{$a_arr};
25      
26      foreach my $key(keys %p)
27      {
28          if ($a{$key})
29          {
30              my %hash_2 = %{$a{$key}};
31              
32              foreach my $key2 (keys %hash_2)
33              {
34                  if(($a{$key}{$key2})&&(!($p{$key}{$key2}))){print "$a{$key}{$key2}\n";}
35              }
36          }
37      }
38 }
39 
40 
41 sub store
42 {
43     my $in = shift;open LIST,"$in";
44     
45     my %all;
46 
47     while(my $line = <LIST>)
48     {   
49         chomp($line);my @split = split /\t/,$line;
50         
51         $all{$split[0]}{$split[1]}=$line;
52     }
53     return \%all;
54 }

猜你喜欢

转载自www.cnblogs.com/yuanjingnan/p/11128036.html