#!/cygdrive/c/Perl/bin/perl # http://www.perlmonks.org/?node_id=447234 my @loc = (); my $x; while () { lc; chomp; push (@loc,$_); } #print "Available locations:\n" . join("\n", sort @loc); my %score = (); #my @phrases = ("Place de la Gare", "Rennes"); my @phrases = ("gare","er","n"); my $phrase; foreach $phrase (@phrases) { my @matches = grep(/$phrase/i, @loc); foreach my $match (@matches) { $score{$match}++; } } my $hiscore = 0; foreach my $hit (keys %score) { my $s = $score{$hit}; $hiscore = $s if $s > $hiscore; push (@{$hits[$s]},$hit); } # just print highest scoring ones print "Top scoring matches with a score of $hiscore:\n"; foreach my $toploc (@{$hits[$hiscore]}) { print "$toploc\n"; } __DATA__ Place De La Gare - Angers Place De La Gare - Nevers Place Mohammed V - Oujda Place De La Gare - Rennes Place de la Gare - Quimper Place Thiers - Nancy Place De La Gare - Grenoble Place Du Chateau - Galerie Marchande Du Rer Place De La Gare - Angers Place De La Gare 1 - Bannes Grenoble Place De La Gare - Nevers Place De La Gare - Rennes Place De La Gare bannes Place de la Gare Place de la Gare - Bergerac Place de la Gare - Moutiers Place de la Gare - Libourne