Zna się ktoś na prel'u ?

Przemysław Iskra sparky w servek.sparky.homelinux.org
Nie, 12 Gru 2004, 15:26:24 CET


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 ?

-- 
 ____  Sparky{PI] -- Przemyslaw _  ___  _  _  ..Mail,MSN  LANG...Pl..Ca..Es..En
/____) ___  ___  _ _ || Iskra  |  | _ \| |  | : GG...3228100  WWW..NotYetAvible
\____\| -_)'___| ||^'||//\\// <   |  _/| |  | : JID......sparky<at>jabberes.org
(____/||   (_-_|_||  ||\\ ||   |_ |_|  |_| _| :..sparky<at>sparky.homelinux.org




Więcej informacji o liście dyskusyjnej pld-devel-pl