Perl映射方法



需要知道这一点,

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} // '' }

相关内容

最新更新