Página 1 de 1

Elemento en array

NotaPublicado: 2006-12-29 05:32 @272
por fgalves
Hola a todos de nuevo,

El caso es que quiero saber si un elemento dado está incluido en un array (@array).

¿Existe alguna instrucción del tipo:
Código: Seleccionar todo
$element in @array

que me devuelva directamente cierto si dicho elemento se encuentra en el array, o hay que implementar un bucle para obtener la respuesta?

Muchas gracias!!
Felipe

NotaPublicado: 2006-12-29 05:50 @284
por explorer
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict;
use warnings;

my @x = (1,2,3,4,5,6,6,7,7,8,8,9,"cosa",23,45);

if ( grep { "cosa"} @x ) {
    print "Tienes una cosa";
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Podrían servir también los módulos List::Util y List::MoreUtils.

NotaPublicado: 2006-12-29 07:40 @361
por fgalves
Tienes toda la razon Explorer... :(
Tengo una "cosa" brutalmente critica, y es mi desconocimiento de Perl y quizas, mis dudas planteadas a veces un poco precipitadamente.
Siento mucho si te he ofendido y he captado el "mensaje".

Saludos,
Felipe

NotaPublicado: 2006-12-29 12:51 @577
por Perl user
explorer escribiste:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use criticism 'brutal';
use strict;
use warnings;

my @x = (1,2,3,4,5,6,6,7,7,8,8,9,"cosa",23,45);

if ( grep { "cosa"} @x ) {
    print "Tienes una cosa";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Podrían servir también los módulos List::Util y List::MoreUtils.


Buscar UN elemento con grep no es la manera de hacerlo, grep no se detiene con el primer elemento, recuerda que es una función de alto orden y filtrará toda la lista.

Tu segunda recomendación es mejor, utilizar List::Util::first.

Saludos,

NotaPublicado: 2006-12-29 17:48 @783
por explorer
fgalves escribiste:Siento mucho si te he ofendido
No me has ofendido... y las dudas que planteas sirven para mucho. Entre otras cosas, para que los novatos aprendan y los que no somos novatos recibamos la reprimenda de Perl User ;-)

NotaPublicado: 2007-01-15 19:06 @837
por explorer
Ya que Perl6 está a la vuelta de la esquina (o algo así), esta es otra forma de hacerlo, con nuestro querido Perl 5.8:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use Perl6::Junction 'any';

my @x = (1,2,3,4,5,6,6,7,7,8,8,9,"cosa",23,45);

if ( any(@x) eq 'cosa' ) {
    print "Tienes una cosa \n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4