Perl Format the Output in table,by removing duplicate entries


Joined
Oct 11, 2012
Messages
1
Reaction score
0
I have written a perl code for processing file 'Output.txt' which has below Content.

new.example.com 28
new.example.com 28
example.com 28
example.com 29
example.com 29
example.com 29
example.com 29
orginal.com 28
orginal.com 29
orginal.com 30
orginal.com 31
expand.com 31
And file 'domain.txt' has list of domain Names which i need to match against File 'Output.txt'

new.example.com
example.com
orginal.com
test.com
new.com

I could manage to write PERL code like this

#!/usr/bin/perl
use strict;
open(LOGFILE,"Output.txt") or die("Could not open log file.");
my $domain_name = 'domain.txt' ;
open(DOM, $domain_name);
my @r_contents = <LOGFILE>;
close(LOGFILE);
while(<DOM>) {
chomp;
my $line = $_;
my @lowercase = map { lc } @r_contents;
my @grepNames = grep /^$line/, @lowercase;
foreach (@grepNames) {
if ( grep /^$line/, @lowercase ) {
$domains{lc($_)}++ ; }
}
}

close(DOM) ;
foreach my $domain (sort keys %domains) {
my %seen ;
($Dname, $WeekNum) = split(/\s+/, $domain);
my @array1 = grep { ! $seen{ $_ }++ } $WeekNum;
push @array2, @array1;
my @array4 = "$domains{$domain} $domain" ;
push @matrix,@array4 ;
}
printf "%-10s %-25s %-25s\n", 'DoaminName', "Week $array2[0]" ,"Week $array2[1]","Week $array2[2]";
print " @matrix \n";

current Output looks like this.

DoaminName Week 28 week29 week30 week 31
2 new.example.com 35
1 example.com 28
4 example.com 29
1 orginal.com 28
1 orginal.com 29
1 orginal.com 30
1 orginal.com 31

But i trying re-write the perl code to print the output like this .Please help me to correct the code.

Domain/WeekNumber Week28 Week29 Week30 Week31
new.example.com 2 No No No
example.com 1 4 NO NO
orginal.com 1 1 1 1
 
Last edited:
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top