use strict; use warnings; use 5.010; open my $dfd, '<', '/usr/share/dict/british-english' or die $!; my %dict; while (<$dfd>) { next unless /^[a-z]+$/; push @{$dict{hash($_)}}, $_; } close $dfd; while (<>) { exit if /^$/; say join '', @{$dict{hash($_)}} if $dict{hash($_)}; } sub hash { join '', sort split //, shift; }