in reply to Re: Re: Generate unique initials from a list of names
in thread Generate unique initials from a list of names
Cheers - L~R#!/usr/bin/perl use strict; use warnings; my %name = map {chomp; $_ => undef} <DATA>; my $num_names = 0; for my $person ( keys %name ) { my @names = split " " , $person; $num_names = @names if @names > $num_names; $_ = ucfirst lc $_ for @names; $name{ $person } = \@names; } my $finished = 0; my $index = 0; while ( ! $finished ) { my $update = 0; for my $person ( keys %name ) { next if ! $name{$person}[$index]; if ( $name{$person}[$index] =~ /(\w+)\w/ ) { my $new_name = $1; if ( ! grep { $new_name eq $_ } map { $name{$_}[$index] } grep { @{$name{$_}} == @{$name{$person}} } keys %name ) { $update = 1; $name{$person}[$index] = $new_name; } } } $index++ if ! $update; $finished = 1 if $index > $num_names; } print "$_ => @{ $name{$_} }\n" for keys %name;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: Re: Generate unique initials from a list of names
by EdwardG (Vicar) on Mar 12, 2004 at 20:33 UTC | |
by Limbic~Region (Chancellor) on Mar 12, 2004 at 21:00 UTC | |
by EdwardG (Vicar) on Mar 12, 2004 at 21:10 UTC | |
by Limbic~Region (Chancellor) on Mar 15, 2004 at 18:11 UTC |