#!/usr/bin/env perl # # edit-distances - output the edit distances of the lines supplied on the input # # $Id$ use warnings; use strict; use Text::WagnerFischer qw(distance); my %line2linenrs; while (<>) { chomp; push( @{ $line2linenrs{$_} }, $. ) if length($_); } my @lines = sort { $line2linenrs{$a}->[0] <=> $line2linenrs{$b}->[0] } keys %line2linenrs; foreach my $i ( 0 .. $#lines ) { foreach my $j ( $i + 1 .. $#lines ) { my @lij = @lines[ $i, $j ]; my @nij = map { $line2linenrs{$_}->[0] } @lij; my $d = distance(@lij); printf "%d %s %d %d %s %s\n", $d, $d / ( length( $lij[0] ) + length( $lij[1] ) ), @nij, @lij; } }