in reply to Compare each array element to the rest, sequentially

Hello Anonymous Monk

Another possible solution to your problem.

The DATA are taken from the Text::Levenshtein module.

#!/usr/bin/perl use strict; use IO::All; use warnings; use Data::Dumper; use Text::Levenshtein qw(distance); my @words = io($ARGV[0])->chomp->slurp; my %hash; for (0..$#words) { my $word = shift @words; $hash{$word} = [distance($word, @words)]; push @words, $word; } print Dumper \%hash; __END__ $ perl test.pl words.txt $VAR1 = { 'bar' => [ 3, 3 ], 'four' => [ 2, 3 ], 'foo' => [ 3, 2 ] }; __DATA__ $ cat words.txt four foo bar

Update: Maybe this alternative solution is better:

#!/usr/bin/perl use strict; use IO::All; use warnings; use Data::Dumper; use Text::Levenshtein qw(distance); my @words = io($ARGV[0])->chomp->slurp; my %HoH; for (0..$#words) { my $word = shift @words; my @distances = distance($word, @words); my %hash; @hash{@words} = @distances; $HoH{$word} = \%hash; push @words, $word; } print Dumper \%HoH; __END__ $ perl test.pl words.txt $VAR1 = { 'foo' => { 'bar' => 3, 'four' => 2 }, 'bar' => { 'four' => 3, 'foo' => 3 }, 'four' => { 'bar' => 3, 'foo' => 2 } };

Hope this helps, BR.

Seeking for Perl wisdom...on the process of learning...not there...yet!