in reply to Parsing a logfile.
First of all, don't load an entire file into an array unless you have a good reason. (There may be a good reason in this case, but I can't tell for sure.) Instead, read and process it line-by-line. The usual method is:
open my $fd, '<', $file or die "Can't open file: $!"; while(my $line = <$fd>){ # do stuff with line in $line }
Now, when you're parsing stuff out of a line, there are two common methods. If you have a bunch of ordered fields separated by a known delimiter, you can split the line on that delimiter. (An aside: sometimes in these cases a CSV module is very useful.) On the other hand, if you are picking out particular strings and data that happens to be near/between them, a regex may be your best bet. (Looking at your data, I suspect a regex wins here.) Examples of the two:
my @fields = split /\t/, $line; # split the line on tabs # or my( $threadnum ) = $line =~ /Thread-(\d+)/; # grab the digits followin +g Thread-
That should get you started on parsing out what you want. For help with the rest of what you talked about, it'd help to see before-and-after examples of what you're trying to do.
Aaron B.
Available for small or large Perl jobs; see my home node.
|
|---|