Kamal Ahmed wrote:
> Hi,
>
> I am new to perl, and would really appreciate if anyone can help me, with
> this:
>
> Following are sample lines from log files
>
> I have to write a perl script which will parse all these files, and :
>
> 1. Count the number of "INFO" or whatever text is in the file, and print
> only those lines that have INFO
Easy.
> 2. I have to create a has table of these keys
Don't know what that means - what keys.
> 3. Later , would be able to further develop the script to do some analysis
> as well.
You need to fix your line wrapping so one can tell what constitues a line.
I assumed that the date is the start of each line and any line that doesn't
start with a date was wrapped from the prior line.
Here's a start :
use strict;
use warnings;
my @logtypes = qw(query shark workflow advisor activity binary);
my @logfiles = ('das_query0.0.log', 'Shark.log', 'workflow_server_0.0.log',
'advisor.log', 'activity_container_0.0.log', 'das_binary0.0.log',
);
my $INFO_cnt = 0;
for (my $ii = 0; $ii < @logfiles; ++$ii) {
my $type = $logtypes[$ii];
my $infile = $logfiles[$ii];
# process each file
open IN, $infile or die "open $infile: $!";
while ($_ = <IN>) {
# process lines in file
if (/INFO/) { # move to specific sub if not on all log types
++$INFO_cnt;
print $_;
}
# process line for this log type
if ($type eq 'query') {
process_query ($_);
} elsif ($type eq 'shark';
process_shark ($_);
} elsif ($type eq 'query';
process_workflow ($_);
} elsif ($type eq 'query';
process_advisor ($_);
} elsif ($type eq 'query';
process_activity ($_);
} elsif ($type eq 'query';
process_binary ($_);
} else {
print STDERR, "Type and files not aligned\n";
}
}
close IN;
}
exit;
#- - - - - - - - - - - - - - - - - -
process_query {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
process_shark {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
process_workflow {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
process_advisor {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
process_activity {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
process_binary {
local $_ = shift;
chomp;
# split line into fields
my @f = split ' ';
# do something with @f
}
#- - - - - - - - - - - - - - - - - -
__END__
--
,-/- __ _ _ $Bill Luebkert Mailto:[EMAIL PROTECTED]
(_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED]
/ ) /--< o // // Castle of Medieval Myth & Magic http://www.todbe.com/
-/-' /___/_<_</_</_ http://dbecoll.tripod.com/ (My Perl/Lakers stuff)
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs