Thanks for this comment, I never heard about this third argument. Here is the updated script:
use strict;
use warnings;
use Data::Dumper;
my $command = "ps -f";
my $id = "PID";
my @ps =`$command`;
$ps[0] =~ s/^\s*//;
my @header = split /\s+/, shift @ps;
my ($posid) = grep { $header[$_] eq $id } 0..$#header;
die "$id: No such column!\n" unless defined( $posid );
splice @header, $posid, 1;
my %psdata;
while( @ps ) {
my $row = shift @ps;
chomp $row;
$row =~ s/^\s*//;
my @row = split /\s+/, $row, $#header+2;
my $this_id = splice @row, $posid, 1;
@{$psdata{$this_id}}{@header} = @row;
}
print Dumper( %psdata );
|