• Publicidad

Duda sobre doble bucle foreach

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Duda sobre doble bucle foreach

Notapor pepex » 2008-10-15 09:52 @453

¡Hola! Quería usar dos archivos de texto y guardarlos en un array.
Entonces cada array manejaría un archivo pero, ¿cómo podría hacer el bucle foreach para no tener que ponerlo y abrirlo dos veces?

Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open (NOMBRES, $nombre);
@nombre = <NOMBRES>;
close(NOMBRES);

open (APELLIDOS, $apellidos);
@apellido = <APELLIDOS>;
close(APELLDIDOS);

foreach $nombres(@nombre){
     foreach $apellidos(@apellido){
         print "$nombre $apellido";
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Intenté probar:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open (NOMBRES, $nombre);
@nombre = <NOMBRES>;
close(NOMBRES);

open (APELLIDOS, $apellidos);
@apellido = <APELLIDOS>;
close(APELLDIDOS);

foreach $nombres(@nombre) && $apellidos(@apellido){
         print "$nombre $apellido";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

pero nada :(

Espero que puedan echar una mano.
pepex
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-10-15 09:43 @446

Publicidad

Notapor explorer » 2008-10-15 10:00 @458

Bienvenido a los foros de Perl en Español, pepex.

No lo entiendo muy bien, pero parece que quieres hacer corresponder cada nombre con su apellido.

Se podría entonces hacer un bucle for $i (0 .. $#nombre) y así puedes ir recorriendo los índices de @nombre y @apellidos, con lo que puedes mostrar uno al lado del otro.

P.D. Esta es una respuesta del foro Intermedio ;)
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor pepex » 2008-10-15 10:09 @464

Lo que quiero es abrir dos archivos (uno con nombres, otro con apellidos) separados, una variable corresponde a usuario y otra a password, lo que quería saber es si podría reducir el code y en vez de usar dos bucles foreach, hacerlo en uno.

Saludos y gracias por responder.
pepex
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-10-15 09:43 @446

Notapor explorer » 2008-10-15 10:35 @482

Sí, con el código que te he indicado antes puedes hacerlo en un solo bucle.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor pepex » 2008-10-15 10:56 @497

No me funciona así, ¿no se podría hacer de otra manera con foreach?

Saludos.
pepex
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-10-15 09:43 @446

Notapor explorer » 2008-10-15 11:09 @506

for es lo mismo que foreach. ¿Qué error te da?

Muestra el código que estás usando...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor pepex » 2008-10-15 11:36 @525

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
open (NOMBRES, 'nombres.txt');
@nombre = <NOMBRES>;
close(NOMBRES);

open (APELLIDOS, 'apellidos.txt');
@apellido = <APELLIDOS>;
close(APELLDIDOS);

foreach $nombre(@nombre){
        chomp $nombre;
     foreach $apellido(@apellido){
                chomp $apellido;
         print "$nombre => $apellido\n";
    }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


nombres.txt:
pedro
rosa
antonio


apellidos.txt:
garcia
martinez
soria


salida:

Código: Seleccionar todo
# perl prueba.pl

pedro => garcia
pedro => martinez
pedro => soria
rosa => garcia
rosa => martinez
rosa => soria
antonio => garcia
antonio => martinez
antonio => soria



Saludos.
pepex
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-10-15 09:43 @446

Notapor explorer » 2008-10-15 11:48 @533

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

open (NOMBRES, 'nombres.txt');
my @nombre = <NOMBRES>;
chomp @nombre;
close(NOMBRES);

open (APELLIDOS, 'apellidos.txt');
my @apellido = <APELLIDOS>;
chomp @apellido;
close(APELLIDOS);

for my $i ( 0 .. $#nombre ) {
    print "$nombre[$i] => $apellido[$i]\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
sale:
Código: Seleccionar todo
pedro => garcia
rosa => martinez
antonio => soria
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor pepex » 2008-10-15 11:56 @538

Ajá, pero lo que interesa es que salga cada nombre con todos los apellidos.
tipo:

Código: Seleccionar todo
pedro => garcia
pedro => martinez
pedro => soria
rosa => garcia
rosa => martinez
rosa => soria
antonio => garcia
antonio => martinez
antonio => soria


Gracias y saludos.
pepex
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2008-10-15 09:43 @446

Notapor explorer » 2008-10-15 12:11 @549

Entonces es que no entendí la pregunta.

Pues el caso es que lo tienes hecho con el doble bucle foreach, así que no le veo más caso a este problema, ¿no?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
push @nombreyapellido, "$nombre $apellido";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 34 invitados