por Perl user » 2007-01-10 17:28 @769
Que tal,
No no creo que Tie::File reescriba el archivo por cada operación de escritura, de hecho si te fijas en los métodos de _twrite y _mwrite lo que hacen simplemente lo que harías tu si lo implementaras a mano, jugar con índices y posiciones.
Mira.. la teoría es sencilla si lo quieres implementar tú:
Por primera vez lee el archivo en su totalidad, analizando en qué posición de inicio y de fin está cada linea (tomando en cuenta dobles saltos de linea ), y guardalos en una estructura de datos interna.
De esa manera, cuando le pidas acceder y modifiar X línea lo que tienes que hacer es posicionarte con seek. No olvides abrir el archivo con opción de lectura y escritura como lo hace Tie::File.
De esta manera si tienes que leer el archivo, pero solo al lanzarlo y no tienes que almacenar nada en memoria. Solo necesitas el juego de índices de inicio y fin. Importante, evalua cualquier caso extremo que te puedas encontrar.
Tie::File lo hace de manera eficiente mapeando el array al disco, utilizando posiciones y jugando con ellas.
Saludos,
Marco A. Manzo
[email protected]http://www.unixmonkeys.com/amnesiac/
Perl Programming Language