#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
my $file_to_search = 'file_to_search';
my $file_of_search_terms = 'file_of_search_terms';
my $file_of_search_counts = 'file_of_search_counts';
my %count;
{
open my $search_terms_fh, '<', $file_of_search_terms;
%count = map { chomp; $_ => 0 } <$search_terms_fh>;
}
my @search_terms = keys %count;
{
open my $in_fh, '<', $file_to_search;
while (<$in_fh>) {
chomp;
next if -1 == index $_, 'Z';
for my $search_term (@search_terms) {
next if -1 == index $_, $search_term;
++$count{$search_term};
last;
}
}
}
{
open my $out_fh, '>', $file_of_search_counts;
print $out_fh "$_ : $count{$_}\n" for sort @search_terms;
}
####
$ cat file_to_search
100008020Z
Z100008020
100008020
100008030Z
Z100008030
100008030
100008040Z
Z100008040
100008040
####
$ cat file_of_search_terms
100008010
100008020
100008030
100008040
100008050
####
$ cat file_of_search_counts
100008010 : 0
100008020 : 2
100008030 : 2
100008040 : 2
100008050 : 0