#!/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 (){ 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 #ServerName1.FD.net.org #ServerName2.FD.net.org #ServerName3.FD.net.org #ServerName3a.FD.net.org # search text file open IN, '<',$file or die "Could not open $file : $!"; while (my $line = ){ # 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; } }