Hi.

I have a log file that contains a collection of individual test
results, each beginning with a "START", and ending with a "FINISH".

I would like to print out the names of the tests that have the error
message "LOOKING FOR THIS STRING".

log file:
----------------------------------------------------
START : c:\disk1\test11.exe
12:50:09 AM Warning: Value of changed
12:50:09 AM Warning: Value of updated
12:50:09 AM Warning: Parameter ignored
TEST_PASSED
Time - Total,Sim,Load,Compare,Save = 13850,13761,59,10,20 mS
FINISH

START : c:\disk1\test22.exe
12:50:09 AM Warning: Value of changed
12:50:09 AM Error: LOOKING FOR THIS STRING
12:50:09 AM Warning: Parameter ignored
12:52:22 AM Error: LOOKING FOR THIS STRING
TEST_FAILED
Time - Total,Sim,Load,Compare,Save = 13850,13761,59,10,20 mS
FINISHED

START : c:\disk1\test33.exe
.
.
.
----------------------------------------------------

All that I can figure out how to do is to print out the line with the
test name, and also the desired "LOOKING FOR THIS STRING" line with
the following script:

-----------------------------------------------------------------------------------------
#!/usr/bin/perl -w

use strict;
use warnings;
my $logfile = 'test.log';
my @list;
my @list2;

my $line2 = '';

open(LOG, $logfile) or die "Couldn't open $logfile: $!\n";


# loop through each line, assigning $line as we go
while( my $line = <LOG> ){
        # test for the pattern
        if( $line =~ /(.*)\.exe/ || $line =~ /LOOKING FOR THIS STRING/ ){
                # $1 contains the first captured string
                push(@list, $line);
       }
}
close(LOG);

# print out all the captured numbers
      map{ print "$_\n"; } @list;
-----------------------------------------------------------------------------------------

For example, this outputs:

  START : c:\disk1\test11.exe
  START : c:\disk1\test22.exe
  12:50:09 AM Error: LOOKING FOR THIS STRING
  START : c:\disk1\test33.exe

Does anybody have any ideas of how I should be trying to approach this
program to get what I actually need?  For the above output, all I
really wanted is to print out "c:\disk1\test22.exe", as that test had
the particular failure output.

Thank you,
Jon

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to