|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Gernichenko 2:5079/49.18 14 Apr 2005 16:57:36 To : Andrew Alakozow Subject : Re: Data::Dumper -------------------------------------------------------------------------------- В четверг, 14 апреля 2005 года, в 11:17, ты писал(а) мне: SG>> А чего это, сабж колбасит на 5-мегабайтных структурах и выше? SG>> AS Perl, 5.8.4, или пора обновиться? AA> use Data::Dumper; AA> $a = { a => '0' x 6_000_000, b => '1' x 6_000_000 }; AA> print Dumper $a; AA> Отработал под 5.8.4 (правда, я собирал его без патчей AS), может дело AA> не в размере? Вот такой код: #!perl use File::Find; use Data::Dumper; sub wanted { if (/.*?\.crypt/){ print STDERR "$_\n"; open F,"<$_" or die "Can't open file $!"; while (<F>){ chomp; @a = split (/:/, $_, 4); #print join (",",@a),"\n"; if ($a[3] eq '0:gecos:home:shell'){ #push @{$cards->{$a[0]}}, $File::Find::name; $cards->{$a[0]} -> [0] += 1; my $fl=1; for (@{$cards->{$a[0]} -> [1]}){ $fl=0 if (/${a[1]}/); } push @{$cards->{$a[0]} -> [1]}, "$a[1]:$a[2]" if ($fl); #print "$a[0]: $File::Find::name\n"; } }; close F; } } $cards={}; find({wanted =>\&wanted, no_chdir=>1, } , '.'); print Data::Dumper->Dump([$cards],['cards']); Отжирает около 100 мегабайт памяти, и окончания процесса я так и не дождался... Файликов *.crypt общим размером 8 мегабайт, формат строк в нём: login:hash_password:total_time:0:gecos:home:shell Как только я выкинул последнюю строку, заменил на цикл, в котором выводится то, что мне надо, всё стало быстро работать. До скорых встреч, *Andrew* С уважением, *Sergey*. --- WinNT 5.1.2600-Service_Pack_2 i1586 Eng, AS Perl5.6.1, Borland C++ v5.02 * Origin: Свой ум - хорошо, а с чужим хуже (2:5079/49.18) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3435425e53df.html, оценка из 5, голосов 10
|