Re: Data::Dumper

From
Sergey Gernichenko (2:5079/49.18)
To
Andrew Alakozow (2:5054/37.63)
Date
2005-04-14T16:57:36Z
Area
RU.PERL
   Доброго времени суток тебе, *Andrew*!

В четверг, 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)
SEEN-BY: 450/208 452/25 100 454/9 455/15 461/33 74 106 640 464/34 465/204
SEEN-BY: 467/24 469/125 478/44 65 550/150 5068 4600/126 4614/9 4623/56 4625/9
SEEN-BY: 4626/100 4632/10 4635/99 1024 4641/444 4642/27 48 4657/50 5001/50
SEEN-BY: 5002/76 5002 5003/34 5010/53 146 5011/13 5015/4 28 214 5019/5 5020/52
SEEN-BY: 5020/115 128 133 150 175 486 600 642 744 794 921 958 968 982 1100
SEEN-BY: 5020/1169 1212 1234 1626 1642 1653 1826 1829 1930 2044 2200 2345 2908
SEEN-BY: 5020/4400 4441 5021/2 5023/11 5024/1 73 5025/19 5030/69 195 382 436
SEEN-BY: 5030/611 920 1016 1039 1520 1688 5031/7 63 5032/11 20 5033/21 35
SEEN-BY: 5034/8 5035/38 63 5036/13 5037/21 36 5038/4 5040/33 47 5041/4 5045/7
SEEN-BY: 5045/42 5047/47 5049/6 157 5050/9 41 47 5051/35 5053/16 38 5054/1 8 9
SEEN-BY: 5054/35 36 37 45 50 66 67 81 85 5055/177 5056/16 5058/77 5059/2 9 20
SEEN-BY: 5060/90 5062/4 7 5063/41 51 5064/7 35 36 5070/26 66 948 5071/22
SEEN-BY: 5075/37 5077/70 5079/29 49 55 67 5083/13 5090/23 5093/4 27 33 5096/18
SEEN-BY: 5100/113 6023/1 6033/2727 6070/5 6096/10
PATH: 5079/49 5020/52 5054/1 37