Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Multiline RegExp. A Better Way?

by kcott (Archbishop)
on Feb 16, 2012 at 03:09 UTC ( [id://954131]=note: print w/replies, xml ) Need Help??


in reply to Multiline RegExp. A Better Way?

Here's another way. It may be a better way. I've used Tie::File so that, even with very large input files, you won't run into any memory issues.

use strict; use warnings; use Tie::File; my $infile = q{noa.txt}; my $wanted_re = qr{ \A (?> ( Pass \s \# | Elapsed \s Time \s+ : \s+ | CPU \s Time \s+ : \s+ | Virtual \s memory \s size \s+ : \s+ | Resident \s set \s size \s+ : \s+ | Major \s page \s faults \s+ : \s+ ) ( [\d.]+ ) ) }msx; my $last_stat_re = qr{ \A Major \s page \s faults \s+ : \s+ \z }msx; tie my @indata, q{Tie::File}, $infile or die $!; for my $line (@indata) { next if $line !~ $wanted_re; print $2; print $1 =~ $last_stat_re ? qq{\n} : q{, }; } untie @indata;

I dummied up some additional input to what you provided:

$ cat noa.txt ... Pass #123 ... ... Elapsed Time : 1753.2 sec CPU Time : 753.2 sec ... Virtual memory size : 4472.6 MB Resident set size : 4362 MB ... Major page faults : 7153 ... Pass #the salt ... Pass #124 ... ... Elapsed Time : 9753.2 sec CPU Time : 953.2 sec ... Virtual memory size : 9472.6 MB Resident Evil Resident set size : 9362 MB ... Major page faults : 9153 ...

Here's the output:

$ noa.pl 123, 1753.2, 753.2, 4472.6, 4362, 7153 124, 9753.2, 953.2, 9472.6, 9362, 9153

-- Ken

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://954131]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (7)
As of 2024-03-28 21:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found