#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
unlink $outputfile;
unlink $outputfile2;
unlink $outputfile3;
sub trimspaces {
my @argsarray = @_;
$argsarray[0] =~ s/^\s+//;
$argsarray[0] =~ s/\s+$//;
return $argsarray[0];
}
open(INPUT , "< D:\\Home\\test\\imbfilelist.txt") or die $!;
open(INPUT2 , "< D:\\Home\\test\\imbrange.txt") or die $!;
my $n;
my $value;
my @ranges;
my $isMatch;
my $printed;
my $fVersion;
my %versionHash=();
while (<INPUT2>) {
chomp;
my ($version, $from, $to) = (split /,/)[ 1, 2, 3 ];
push @ranges, [ $from, $to, trimspaces($version)];
if (!exists $versionHash{trimspaces($version)})
{
$versionHash{trimspaces($version)}=0;
}
}
$versionHash{"No Matched"}=0;
# foreach my $key (keys %fileHandleHash)
# {
# close $fileHandleHash{$fVersion};
# }
close INPUT2;
while (<INPUT>)
{
$isMatch=0;
$n = substr($_,12-1,9);
for my $r (@ranges)
{
if ( $n >= $r->[0] && $n <= $r->[1])
{
$fVersion=$r->[2];
if (exists $versionHash{$fVersion})
{
$versionHash{$fVersion}++;
}
$isMatch=1;
last;
}
}
if (!$isMatch)
{
$versionHash{"No Matched"}++;
}
}
foreach my $key (keys %versionHash)
{
print STDOUT "$key IMB Count: " . $versionHash{$key} . "\n";
}
close INPUT;
I have change the code to loop throw my output looks like this:
folded IMB Count: 15
No Matched IMB Count: 1
selfmail IMB Count: 14
the range comes from here
imb,folded ,655575645,827544086
imb,selfmail ,827549192,827572977
and still the same list for input
I now need to be able to create files for each instance: first file will be folded.txt with 15 of the original number seconde file will be nomatch.txt with the original as well and same for the third. any advice?? | [reply] [d/l] |