• Publicidad

Comparar dos arrays

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

Comparar dos arrays

Notapor Statyk » 2005-06-05 17:16 @761

Buenas,

¿Cómo podría comprobar que dos arrays son iguales? He probado con lo siguiente, pero no funciona:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @array1 = ( "1", "2" );
  2. my @array2 = ( "2", "3" );
  3.  
  4. if ( @array1 eq @array2 ) {
  5.     print "Arrays iguales\n";
  6. }
  7. else {
  8.     print "Arrays distintos\n";
  9. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Podría ir comparando elemento a elemento, pero seguro que en Perl existe una forma más fácil :-)

Por otra parte, puede que los elementos del array estén desordenados. ¿Como podría ordenarlos? Alfabéticamente, por ejemplo...

¡¡MUCHAS GRACIAS!!
Statyk
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2005-06-05 17:12 @758

Publicidad

Notapor kidd » 2005-06-06 07:34 @357

Hola:

En el FAQ de perl (perlfaq) viene una solución a ello y dice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $are_equal = compare_arrays( \@frogs, \@toads );
  2.  
  3. sub compare_arrays {
  4.     my ( $first, $second ) = @_;
  5.     local $^W = 0;                     # silence spurious -w undef complaints
  6.     return 0 unless @$first == @$second;
  7.     for ( my $i = 0; $i < @$first; $i++ ) {
  8.         return 0 if $first->[$i] ne $second->[$i];
  9.     }
  10.     return 1;
  11. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Al terminar la variable $are_equal tendrá 0 si no son iguales y 1 si son iguales.

También en las siguientes ligas encontrarás varias maneras por medio de las cuales puedes comparar los elementos de un array:
http://perlmonks.org/index.pl?node_id=156564
http://perlmonks.org/index.pl?node_id=222071
http://www.stonehenge.com/merlyn/UnixReview/col35.html

Ahora, si quieres hacer un sort() de tu array te recomiendo que leas la última parte del último boletín de CaFe.pm en donde habla justamente acerca de las técnicas que hay para lograr eso: http://cafe.pm.org/boletines/CaFePerl-I ... y_de_all__


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Perl user » 2005-06-08 12:42 @570

Es mejor no reinventar la rueda, cuando el algoritmo es pequeño y aplica para ciertas características, pero si ya tienes herramientas como Array::Compare.
La vida es más sencilla :)

Saludos.
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor monoswim » 2005-06-08 13:59 @624

¡¡¡ Welcome Back !!!

¡¡¡ Ya se te extrañaba !!!

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor Statyk » 2005-06-11 17:39 @777

Hola otra vez,

Gracias, Perl user, por la recomendación; ahora con ese módulo es mucho más sencillo :-)

Me ha surgido otra duda, la planteo en otro hilo. Saludos
Statyk
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2005-06-05 17:12 @758


Volver a Básico

¿Quién está conectado?

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

cron