Tengo dos archivos de texto que contienen datos en columnas de la variedad position
- value
, ordenados por position
.¿Cómo puedo recorrer dos archivos simultáneamente en Perl?
Aquí se muestra un ejemplo del primer archivo (archivo A
):
100 1
101 1
102 0
103 2
104 1
...
Aquí se muestra un ejemplo del segundo archivo (B
):
20 0
21 0
...
100 2
101 1
192 3
193 1
...
En lugar de leer uno de los dos archivos en una tabla hash, que es prohibitiva debido a restricciones de memoria, lo que me gustaría hacer es recorrer dos archivos simultáneamente, de forma gradual.
Lo que esto significa es que me gustaría transmitir a través de las líneas de A
o B
y comparar los valores position
.
Si las dos posiciones son iguales, entonces realizo un cálculo en los valores asociados con esa posición.
De lo contrario, si las posiciones no son iguales, me desplazo por las líneas del archivo A
o archivo B
hasta que las posiciones sean iguales (cuando vuelva a realizar mi cálculo) o llegue a EOF de ambos archivos.
¿Hay alguna manera de hacer esto en Perl?
¿Cuántas líneas en cada archivo? ¿Cuál es la restricción de memoria? –
¿Qué has intentado hasta ahora? ¿Hay algo más sutil que simplemente abrir ambos archivos, leer líneas de cada uno, etc.? –
Crear una tabla hash de múltiples GB o leer uno de los dos archivos en una matriz de memoria no es realizable. Estoy buscando transmitir ambos archivos, usando su propiedad ordenada para pasar por cualquiera de los archivos dependiendo de la posición actual. –