Ojalá me pudieran ayudar a entender la lógica de los siguientes bucles porque aparentemente no es como yo creo. Me explico: lo que quiero es lo siguiente, abrir dos archivos para compararlos y crear un tercero con los elementos que NO estén en el segundo archivo:
el código que utilizo es el siguiente:
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict;
my $i;
my @archivo1;
my @archivo2;
my $arch3 = 'archivo-sin-bc.txt';
@archivo1 = 'aaa bbb ccc ddd eee';
@archivo2 = 'bbb ccc';
open (ARCH3,">$arch3");
while (<@archivo1>)
{
foreach $i (@archivo2)
{
if ( $_ =~ /$i/)
{
next;
} else {
print ARCH3 "$i\n";
}
}
}
use strict;
my $i;
my @archivo1;
my @archivo2;
my $arch3 = 'archivo-sin-bc.txt';
@archivo1 = 'aaa bbb ccc ddd eee';
@archivo2 = 'bbb ccc';
open (ARCH3,">$arch3");
while (<@archivo1>)
{
foreach $i (@archivo2)
{
if ( $_ =~ /$i/)
{
next;
} else {
print ARCH3 "$i\n";
}
}
}
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
pero al ejecutar el script y checar el tercer archivo obtengo lo siguiente:
- Código: Seleccionar todo
bbb ccc
bbb ccc
bbb ccc
bbb ccc
No entiendo que está pasando. Según yo lo que debería hacer es lo siguiente:
- por cada línea del archivo 1
- Verifica si contiene alguno de los caracteres del archivo2
- si es así pasa a la siguiente
- si no, entonces escribe la línea en el archivo
pero según el resultado no esta haciéndolo como yo quiero. Ojalá me puedan ayudar a entender esto.
De antemano GRACIAS