これを知る必要があります、
Open File;
map{ chomp; $isword{uc join "", sort /./g}.= "$_+" } <File>;
このマップが何をするのか、そしてそれが何を返すのかを知りたい。ソートと、なぜucが""に参加するのか理解できなかった。
このプログラムで使用されるファイルには、ワードリストが含まれています。
誰か助けてください。
破棄されるため、返されるものは意味がありません。それはそれを奇妙な使用にしmap
ます。普通に書くだろう
for (<File>) { chomp; $isword{uc join "", sort /./g}.= "$_+"; }
これはメモリの無駄です
while (<File>) { chomp; $isword{uc join "", sort /./g} .= "$_+"; }
遭遇する行ごとに、行を形成する文字を正規化します。
apple becomes AELPP
orange becomes AEGNOR
art becomes ART
rat becomes ART
tar becomes ART
etc
その正規化された形式をハッシュのキーとして使用し、そのキーに行を格納します。
$isword{AELPP} = 'apple+';
$isword{AEGNOR} = 'orange+';
$isword{ART} = 'art+rat+tar+';
各行が単語であると仮定すると、単語のアナグラムをすばやく検索できます。
sub find_anagrams { split /\+/, $isword{uc join "", sort /./g} // '' }