keys %foo;
while (my ($k, $v) = each %foo) {
...
return ...;
}
Для вышеприведенного кода, если while вызывается более чем один раз за время существования хеша %foo, не следует забывать о сбросе итератора each при помощи keys.
Я вот забыл, так как практически не использую each, и потратил время на поиски причины, почему код выдает неверный результат. Хорошо, что сразу написал тест и увидел, что есть ошибка.
1 комментарий:
Для сброса хэша есть функция reset:
reset %hash;
думаю, что "reset" надёжней, чем "keys", потому что "reset" как раз и предназначена для сброса.
Вполне возможно, что в следующих версиях "keys" не будет сбрасывать
Отправить комментарий