Perl a velky skalar
Honza Pazdziora
adelton na fi.muni.cz
Středa Duben 4 11:30:34 MEST 2001
On Wed, 4 Apr 2001 09:13:40 GMT, Pavel Šmerk <xsmerk na informatics.muni.cz> wrote:
>
> zase budu otravovat s par problemy a budu rozhodne vdecny za veskere
> rady.
Followups set.
> Jak lze "prejmenovat" promennou? Mam velkou promennou $vse a chtel bych
> k ni pristupovat pod jmenem $_, abych nemusel psat $vse =~ /.../. $_ =
> $vse; undef $vse; ale kopiruje obsah, pricemz se (na chvili) zabirana
> pamet zdvojnasobi. Asi to navic i neco trva. Jde to udelat nejak lepe?
$vse = 'jezek';
*_ = \$vse;
print "$_\n";
__END__
jezek
Nicmene to, co chces, se da udelat i
for ($vse) {
s/neco/toto/g;
}
a ten aliasing mas zadarmo.
> Dalsi nejasnost - mam soubor a chci v nem udelat nejake nahrady. Muzu ho
> cist po nejakych kusech, delat nahrady a zase zapisovat. Taky ho muzu
> precist cely naraz, udelat nahrady a zapsat. Je neco z toho rychlejsi?
Zalezi. Zalezi, jak ty nahrady delas a co predpokladas o tech datech.
> Nejvaznejsi problem mam ale tento: mam 20MB v $_, program zabira neco
> pres 20MB. Udelam nekolik prikazu typu "s/...(...)...(...).../.../sg;",
> $_ ma stale zhruba 20MB, ovsem program zabira skoro 300MB pameti. Pokud
> jsem to spravne sledoval, kazde to nahrazeni zvetsi zabiranou pamet. Nic
> jineho krome s///sg nedelam. Jak je to mozne a jak se tomu lze branit?
> (Zkusil jsem to psat jako "1 while s///s;", to tu pamet nakonec zabralo
> taky, jenom to bylo asi 30krat pomalejsi.)
Potrebujeme videt presny kod.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Petition for a Software Patent Free Europe http://petition.eurolinux.org
------------------------------------------------------------------------
Další informace o konferenci Perl