use strict; use warnings; my %namesum; while (my $line=) { chomp $line; next unless $line; $line=~s/[\{\}]//g; my @parts=split(/\s+/,$line); my ($slots_used,$slots_free)=split('/',$parts[2]); my $name=substr($parts[0],0,3); $namesum{$name}[0]+=$slots_used; $namesum{$name}[1]+=$slots_free; } for my $key (sort keys %namesum){ print "\nname:".$key."\n"; print "total slots used:".$namesum{$key}[0]."\n"; print "total slots free:".$namesum{$key}[1]."\n"; } __DATA__ {asf192lin1 C 0/8 0 0 0 4503 16 2922 44316 1} {asf256lin10 + 2/16 15 0 0 4641 16 2926 194108 0} {cad192lin1 C 0/12 2 0 0 1432 12 3397 179605 0} {cas256lin1 C 0/12 50 0 56 3992 12 3397 165099 0} {cas192lin11 C 0/12 50 0 56 3992 12 3397 165099 0} {dsf192lin6 + 0/16 0 0 0 4751 16 2930 179123 0}