use strict; use warnings; my $string; { local $/; $string = ; } my @words = split /[.,;:?! \n]+/, $string; my $rhWords = {}; my $order = 0; foreach my $word (@words) { my $lcWord = lc $word; push @{$rhWords->{$lcWord}->{order}}, ++ $order; $rhWords->{$lcWord}->{count} ++; } my %found = (); $string =~ s { ([^.,;:?! \n]+)(?{++ $found{lc $1}}) } { $1 . ( $rhWords->{lc $1}->{count} > 1 ? "[$^R/$rhWords->{lc $1}->{count}/@{[pos()]}]" : "" ) }xeg; print "\n$string\n"; __END__ I need to know how to compare items within a string... I have dropped a textfile into an array, but now I need to check whether words in that text are repeated throughout. I have split the text; as I only want the text to be manipulated. Maybe it's better to split it like this; So anyway, I basically need to check now across my string whether any elements in my string are repeated, and if so, how many times. I've read a lot about manipulating arrays, but they're all based on arrays that you create yourself, rather than arrays created by opening a textfile, so I'm not sure how to manipulate my array. Any help would be much appreciated.