use strict; use warnings; my (%prochash,@parray,@pids,$list,$pid,$time,$cpu,$user,$args); $|=1; push @parray, qx(/usr/bin/ps -ef -o pid,time,pcpu,user,args|/usr/bin/tail -12); print scalar @parray,"\n"; foreach (@parray) { $pid = (split)[0]; $time = (split)[1]; $cpu = (split)[2]; $user = (split)[3]; $args = (split)[4]; $prochash{$cpu} = { 'pid' => $pid, 'time' => $time, 'user' => $user, 'args' => $args, }; } use Data::Dumper; print Dumper \%prochash; __DATA__ 12 $VAR1 = { '0.1' => { 'pid' => '10485852', 'time' => '02:16:16', 'args' => '/opt/freeware/ossec/bin/ossec-syscheckd', 'user' => 'root' }, '0.0' => { 'pid' => '14876814', 'time' => '00:00:00', 'args' => '/bin/bsh', 'user' => 'root' } };