The object of the code below is to output a list of space seperated fields
with PID, username and process. The code generates te correct output. My
guess is that my perl code can be smaller. Who dares?

#!perl
#
# Object:
#  To output a tab separated list of PID, username and process
#  for windows XP
#
# Prerequisites:
#  1) ActiveState Perl
#  2) Windows XP

use warnings;
use strict;

for my $line (`tasklist /v /nh`) {
 chomp($line);
 if ( $line ne "" ) {
  # extract PID
  my $pid = substr($line, 26, 6);
  # remove leading spaces
  $pid =~ s/^ *([0-9]+)$/$1/g;

  # extract username
  my $user = substr($line, 88, 50);
  # remove trailing spaces
  $user =~ s/^(.*\S)\s+$/$1/g;
  # change spaces in username to underscores
  $user =~ s/\s/\_/g;

  # extract process
  my $proc = substr($line, 0, 24).substr($line, 152, 72);
  # change multiple spaces to single spaces
  $proc =~ s/\s\s\s*/ /g;
  # remove trailing space
  $proc =~ s/\s$//g;
  # remove trailing N/A
  $proc =~ s/ N\/A$//g;

  # print tab seperated fields
  print $pid, " ", $user, " ", $proc, "\n";
 }
}



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


Reply via email to