Perl a velky skalar
Pavel Šmerk
xsmerk na informatics.muni.cz
Středa Duben 4 11:13:40 MEST 2001
Zdravim,
zase budu otravovat s par problemy a budu rozhodne vdecny za veskere
rady.
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?
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?
(Predpokladam, ze pamet je dostatecne velka na obe varianty.)
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.)
Diky moc
P.
Další informace o konferenci Perl