in reply to Re^2: Print word from text file that is not an exact match
in thread Print word from text file that is not an exact match

Paste computer name(s) here, press enter key,

Where are you copying the names from, is is another text file ? If so, please show example

poj
  • Comment on Re^3: Print word from text file that is not an exact match

Replies are listed 'Best First'.
Re^4: Print word from text file that is not an exact match
by TonyNY (Beadle) on Jun 09, 2018 at 18:37 UTC
    Hi poj, Yes I am copying the names from another text file that looks something like this: Server1 Server2 Server3 Regards, Tony

      There are ways to avoid repeat searches of each line but this should get you started.

      #!/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 push @computers,$_; } 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> # 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 (@computers) { if ( my ($name) = $line =~ /($search[\.\w]*)/ ){ print "Name ; $name\n"; ++$count; } } } close IN; # result if ($count){ print "$count matches\n"; } else { print "No matches found\n"; }
      poj
        Perfect, exactly what I was looking for. I need the input from the user of the script so all I needed to do was to redirect the computer names from the array to the names.txt file and it worked like a charm. BAM! Thanks so much for your help poj -Tony