#!/usr/bin/perl
use strict;
my $count = 0;
my $namefile = $ARGV[0] || 'names.txt'; # default if no argument
# names.txt
#ServerName1
#ServerName2
# get list of computers to search for
my %computers;
open FILE,'<',$namefile or die "Could not open $namefile : $!";
while (<FILE>){
chomp;
s/^\s+|\s+$//g; # trim spaces
next unless /\S/; # skip blank lines
$computers{$_} = []; # array to hold search results
}
close FILE;
my $file = "computernames.txt";
# computernames.txt
#<Answer type="string">ServerName1.FD.net.org</Answer>
#<Answer type="string">ServerName2.FD.net.org</Answer>
#<Answer type="string">ServerName3.FD.net.org</Answer>
#<Answer type="string">ServerName3a.FD.net.org</Answer>
# search text file
open IN, '<',$file or die "Could not open $file : $!";
while (my $line = <IN>){
# repeat line search for each computer
foreach my $search (keys %computers) {
if ( my ($name) = $line =~ />(.*$search[^<]*)/ ){
printf "Match '%-20s => %s\n",$search,$name;
push @{$computers{$search}},$name; # store match
}
}
}
close IN;
# result
print "\nNo matches found for :\n";
for my $search (sort keys %computers){
print "$search\n" if @{$computers{$search}} == 0;
}
print "\nMatches found for :\n";
for my $search (sort keys %computers){
for my $name (@{$computers{$search}}){
printf "Match %-20s => %s\n",$search,$name;
}
}
poj |