Buenas tardes, desde México.
Tengo una duda tal vez muy básica... lo que quiero hacer es poder comparar dos archivos con el primer archivo [campo1]~[campo2]~[campo3]~...~[campon],
y el segundo archivo [campo1]~[campo2]~[campo3]~...~[campon]
El separador es '~'.
Al estar buscando en el foro encontré el siguiente código:
#!/usr/bin/perl
use common::sense; # sentido común
use autodie; # y sacrificio
use File::Slurp; # sin dejar de chupar
## Leer ficheros
my @primer_archivo = read_file('Nuevo.txt');
my @segundo_archivo = read_file('Viejo.txt');
## Transformación del segundo archivo
for my $linea (@segundo_archivo) {
$linea = (split " ", $linea)[0]; # Nos quedamos solo con
# la primera cadena de cada línea
}
## Apertura del fichero de diferencias
open my $fichero_diferencias, '>', 'Diferencias.txt';
## Comparación
for my $linea (@primer_archivo) {
my $primera_cadena = (split " ", $linea)[0];
unless ($primera_cadena ~~ @segundo_archivo) { # a menos que la $primera_cadena esté en el @segundo_archivo,
print $fichero_diferencias $linea; # lo escribimos en el $fichero_diferencias
}
}
## Cierre del fichero de diferencias
close $fichero_diferencias;
__END__
Me "sirvió" pero tarda mucho debido a la cantidad de información en la línea que se maneja, aparte no me "sirve" para lo que necesito debido a que los campos que necesito que sean idénticos serían el [campo1] del primer archivo con el [campo1] del segundo archivo y el [campo3] del primer archivo con el [campo3] del segundo archivo y no toda la línea.
Aparte quisiera que se generara un tercer archivo con toda la línea.
De antemano, les agradezco su ayuda.