Zna się ktoś na prel'u ?
Paweł Żurowski
pzurowski w pld-linux.org
Nie, 12 Gru 2004, 16:53:55 CET
Dnia 12-12-2004, nie o godzinie 15:26 +0100, Przemysław Iskra
napisał(a):
> Bo ja niebardzo...
>
> Ale jest sobie coś takiego:
>
> #v+
> #!/usr/bin/perl
> use strict;
>
> sub decomposespec {
> my $file=$_[0];
> open F_IN, "$file";
> while (<F_IN>) {
> print "$_";
> #last;
> }
> close F_IN;
> }
>
> my $specdir="/home/users/sparky/pld-cvs/SPECS";
> opendir DIR, "$specdir";
> foreach( sort readdir DIR ) {
> next unless /.spec$/;
> decomposespec("$specdir/metisse.spec");
> }
> closedir DIR;
> #v-
>
>
> czyli około 8000 razy otwiera plik, wypisuje i zamyka
> pod koniec działania program ten zajmuje ~30MB pamięci (przy większym
> pliku więcej)
> to się robi jakaś historia zmiennych czy coś ?
> o cache pliku niema mowy, bo to przecież cały czas ten sam plik;
>
> jak wewnątrz while odkomentuje się #last to zużywa tyle samo ramu,
> a jak poprostu się napisze: print <F_IN>; zamiast całego while to
> ilość zużywanej pamięci nie wzrasta, jest około 2MB cały czas
>
> nie rozumiem tego, jakiś buffer jest ? to jak go wyczyścić ?
> a może błąd w perlu ? (perl-base-5.8.6-2)
>
> P.S. w czasie pisania tego listu wpadło mi do głowy: zamiast while
> użyłem foreach, program działa z zamierzonym efektem a pamięci nie
> zżera; z tym while jest coś nietak ?
przy zalozeniu, ze tam nie pownno byc "$specdir/metisse.spec", a $_
(albo $specdir/$_), to:
bez lasta wyglada mi to na cos w stylu
ls /home/users/sparky/pld-cvs/SPECS|grep "spec$"|xargs cat
a z lastem na:
ls /home/users/sparky/pld-cvs/SPECS|grep "spec$"|xargs head -qn
1
pozdrawiam
-pawel
--
Pawel Zurowski
Więcej informacji o liście dyskusyjnej pld-devel-pl