in reply to process table

That's because you use the "%CPU" column as the hash key, yet its values are not unique, so newer values overwrite the older ones. For example, this is what I get on my machine:

$ ps -ef -o pid,time,pcpu,user,args|/usr/bin/tail -12 | perl -MData::D +umper -ne'$_{(split)[2]}++;END{print Dumper \%_}' $VAR1 = { '0.4' => 1, '%CPU' => 1, '0.0' => 7 };
Use the PID column instead.

Update: was a bit outrun by roboticus (++).