# Rate am_new # am_new 40.9/s -- am_new => sub { my ( @a, %h ); open my $fh, '<:raw', 'unixdict.txt' or die; while ( <$fh> ) { next unless length > 6; chomp; push @a, $_ if -1 != index $_, 'e'; next unless -1 != index $_, 'i'; my $key = tr/e/i/r; $h{ $key } = $_ unless exists $h{ $key } and $_ lt $h{ $key } } close $fh; my ( @ret, $key ); exists $h{ $key = tr/e/i/r } and $h{ $key } gt $_ and push @ret, sprintf "%30s %s\n", $_, $h{ $key } for @a; @ret },