我在这里有一个工作代码,它可以正常工作8或10封电子邮件,但如果你只是放20封电子邮件,它永远不会完成计算。也就是说,它不是一个无限循环,否则它永远不会计算任何东西。此外,如果您仅使用10封电子邮件,但要求它列出2个以上的电子邮件,则会发生同样的事情。是的,正如指出的那样,有一段时间(@地址),并且在那里有一个推入地址的地方,这就是原因。我试图用另一个名字替换它被推入的那个数组,但是我得到奇怪的错误,就像它从列表中选择一个电子邮件,它会抱怨说虽然严格的引用是,我不能使用它... 我明白100直到'地图'行为止的代码。在那之后,没有这么多...Perl:'半'无限循环?
如果我们看一下这个部分:
push @addresses, $address;
$moved{$address}++;
# say "pushing $address to moved"; # debug
一会说变量$地址将不得不推,不进@addresses,因为这是数据的来源(因此指出了循环),但是移到了'移动',但是,对不起,'移动'是一个散列。你不能将一个变量推入哈希,你能吗?应该“移动”实际上是一个数组而不是散列?这是我迷路
我在想这个代替了。但它仅仅是直觉,而不是真正的知识
push @{ $moved[$i] }, $address
在调试器中运行此操作,并在@addresses上放置一个手表。既然你正在做一个'while @地址',后来你做了一个'push @ adresses',我的小手指告诉我要注意一个永不减少的列表... – Konerak 2012-07-21 22:13:13