Stripping duplicates from a list

IvorW heno-fijw at xemaps.com
Thu Jun 12 16:52:35 BST 2008


Kake L Pugh wrote:
> Hello.  I have a list of strings of variable capitalisation, for example:
>
> aubergine
> Aubergine
> Banana
> carrot
> Daikon
> DaiKon
> daikon
> elephant
>
> What I want to do is strip out the duplicates - i.e. those strings
> which differ only by capitalisation - but keep by preference one of
> the versions that has a capital letter at the beginning.  So the above
> list would map to:
>
> Aubergine
> Banana
> carrot
> [either Daikon or DaiKon - doesn't matter which]
> elephant
>
> Ideas for the neatest way to do this?  Everything I've come up with so
> far is clumsy or buggy.  (This might be because I'm slightly hungover,
> so sorry if this is actually a really simple problem.)
>
> Kake
>   
The simplest way to do this is to use a hash, lower casing the key to
populate it

# Source data:
my @foo = ( qw/

aubergine
Aubergine
Banana
carrot
Daikon
DaiKon
daikon
elephant

);

my %dedup = map {lc($_), $_} @foo;


my @foo_done = sort values %dedup;


More information about the london.pm mailing list