|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serge Chervjakov 2:5020/400 25 Apr 2004 18:51:17 To : Andrew Rogov Subject : Re: <none> -------------------------------------------------------------------------------- Sun Apr 25 2004 14:21, Andrew Rogov wrote to Alexander Balandin: AR> %merged = (%A, %B); AR> To save memory, loop over the hashes' elements and build a new hash that AR> way: AR> %merged = (); AR> while ( ($k,$v) = each(%A) ) { AR> $merged{$k} = $v; AR> } AR> while ( ($k,$v) = each(%B) ) { AR> $merged{$k} = $v; AR> } AR> Perl Cookbook, "5.10. Merging Hashes" С кукбуком конечно спорить не буду, но все-таки интересно, каким образом тут память-то экономится? Вроде ж создается тот же самый 3-й хэш, того же размера... IMHO, куда экономнее (по памяти) было бы что-нибудь вроде: @A{keys(%B)}=values(%B); Вот вопрос кстати. Почему пишется (тут) именно @A, а не %A? @ - тут означает, что мы именно списку ставим в соответсвие другой список? --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/166798e578270.html, оценка из 5, голосов 10
|