use strict; use warnings; my $word = 'committee'; my @list = qw(t r e e); my %remove; $remove{$_}++ for @list; for my $letter (keys %remove) { --$remove{$letter} while $remove{$letter} and $word =~ s/$letter//; } #rebuild list @list = (); for my $letter (keys %remove) { push @list, $letter while $remove{$letter}--; } print "Edited word: $word\nEdited list: @list"; #### Edited word: commit Edited list: r