• Publicidad

Forma de usar los arrays

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Forma de usar los arrays

Notapor BigBear » 2010-04-08 16:22 @723

Hola a todos.

Tengo los siguientes arrays:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@nombres = ("pablo","pepe","copia","copia","copia","copia");
@hace = ("paginas","nada","copia","copia","copia","copia");
@forma = ("ok","ok","ok","ok","ok","ok");
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que me gustaría es hacer que esos arrays se impriman de la siguiente manera agregándole en un print() la palabra "hace":

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
pablo hace paginas ok
pepe hace nada ok
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y así, sucesivamente.

Espero hacer explicado bien.

¿Alguien me podría ayudar?
Última edición por BigBear el 2010-04-08 16:31 @729, editado 1 vez en total
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Forma de usar los arrays

Notapor explorer » 2010-04-08 16:31 @729

Usa List::AllUtils::each_array().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use List::AllUtils qw(each_array);
  4.  
  5. my @nombres = qw( pablo   pepe copia copia copia copia );
  6. my @hace    = qw( paginas nada copia copia copia copia );
  7. my @forma   = qw( ok      ok   ok    ok    ok    ok    );
  8.  
  9. my $iterador = each_array @nombres, @hace, @forma;
  10.  
  11. while (my ($nombre, $hace, $forma) = $iterador->()) {
  12.  
  13.     print "$nombre hace $hace $forma\n";
  14. }
  15.  
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Forma de usar los arrays

Notapor BigBear » 2010-04-08 16:37 @734

Era más simple de lo que pensaba :) . Como siempre, gracias, explorer.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Forma de usar los arrays

Notapor creating021 » 2010-04-08 20:00 @875

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use strict;
  3.  
  4. my @nombres = qw( pablo   pepe copia copia copia copia );
  5. my @hace    = qw( paginas nada copia copia copia copia );
  6. my @forma   = qw( ok      ok   ok    ok    ok    ok    );
  7.  
  8. for ( my $i = 0; $i < ($#nombres + 1); $i++ ) {
  9.     print "$nombres[$i] hace $hace[$i] $forma[$i]\n";
  10. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Solamente funciona si el tamaño de @nombres es igual al de @hace y @forma.

¿Conoces alguna otra forma de hacerlo? Pon todas las formas que se te ocurran y demuestra la versatilidad de Perl :D
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Re: Forma de usar los arrays

Notapor dr9170 » 2010-04-08 22:34 @981

¡Conchale mi pana! Aquí te envío lo que yo hice... llevo como 3 semanas aprendiendo Perl y hasta hora es de lo mejor, la cantidad de módulos que te facilitan el trabajo es increíble...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. @nombres = ("pablo","pepe","copia","copia","copia","copia");
  4. @hace = ("paginas","nada","copia","copia","copia","copia");
  5. @forma = ("ok","ok","ok","ok","ok","ok");
  6.  
  7. $c = 0 ;
  8.  
  9. while ( $c < $#nombres ) {
  10.  
  11.         print $nombres[$c] ;
  12.         print " hace " ;
  13.         print $hace[$c] ;
  14.         print " " ;
  15.         print $forma[$c] ;
  16.         print "\n" ;
  17.  
  18. $c++;
  19.  
  20. }
  21.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Es super gafo... pero bueno, querías conocer formas... Este hace lo que tu quieres... Saludos desde Venezuela
dr9170
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2010-04-08 22:30 @979

Re: Forma de usar los arrays

Notapor explorer » 2010-04-09 03:36 @192

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

Gracias por tu aporte, dr9170. Solo comentarte un detalle.

En el bucle while(), has puesto que $c vaya incrementándose mientras que su valor sea menor que $#nombres.

$#nombres devuelve el valor del último índice del arreglo @nombres.

Eso quiere decir que, en tu bucle, no se imprimirá el último índice, porque la condición de parada se ejecutará antes de que $c valga lo mismo que $#nombres.

Hay un par de soluciones para esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
while ( $c <  @nombres  ) {

while ( $c <= $#nombres ) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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

cron