$ perl -Mwarnings -Mstrict -le' my @array = qw( 1 3 3 3 5 5 5 5 ); my %count; my @new_array = map { ++$count{ $array[ $_ ] }; no warnings q/uninitialized/; $array[ $_ ] eq $array[ $_ + 1 ] ? () : $count{ $array[ $_ ] } } 0 .. $#array; print "@new_array"; ' 1 3 4