这个需要知道
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} // '' }