-------- Original Message --------
Subject: Re: Help with parsing output
Date: Fri, 31 May 2002 11:07:16 +0530
From: Sudarsan Raghavan <[EMAIL PROTECTED]>
Organization: HP ISO
To: "John W. Krahn" <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
<[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
"John W. Krahn" wrote:
> Sudarsan Raghavan wrote:
> >
> > "Kipp, James" wrote:
> >
> > > I am reading output from a pipe to a command called 'prstat' (like top).
> > > just wanted to get some ideas on the best way to capture the data i am
> > > looking for. below is an example of the output:
> >
> > # INPUTDATA is the filehandle through which you are getting the input
> > while (<INPUTDATA>) {
> > chomp;
>
> chomp() isn't really needed as the split on whitespace removes newlines
> (\s includes \n).
>
> > s/^\s+//;
>
> If you use the default split you won't need this either.
>
> > next if (m/^$/ || (1 .. /^NPROC/));
> > unless (/^Total/) {
> > # Assumes the line to stop searching for input starts with Total
> > my ($user, $mem, $cpu) = (split (/\s+/))[1, 4, 6];
>
> my ($user, $mem, $cpu) = (split)[1, 4, 6];
>
> > print "user = $user, mem = $mem, cpu = $cpu\n";
> > }
> > }
> > close (INPUTDATA);
>
> How about something like this: :-)
Thanks for pointers :-)
>
>
> while ( <INPUTDATA> ) {
> if ( /NPROC/ .. /^Total/ and /\d/ ) {
I guess you meant /^NPROC/
>
> my ( $user, $mem, $cpu ) = (split)[1, 4, 6];
> print "user = $user, mem = $mem, cpu = $cpu\n";
> }
> }
>
> John
> --
> use Perl;
> program
> fulfillment
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]