• Publicidad

Comprobar array vacío

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

Comprobar array vacío

Notapor tammyrey » 2009-05-08 04:50 @243

¡Hola! ¿Alguien sabe cómo puedo comprobar si un array está vacío?

Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $item = GetItem($item_id); # $item es un array que puede estar vacío
   
if (el array tiene algo){
   warn "el array tiene datos!";
}else{
   warn "el array está vacío!";
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


No sé cómo poner el if()... porque, en mi caso, $item está vacío y, por lo tanto, debería entrar por el else{} y no por el if().

He probado a poner en el if() cosas como $item solamente o length($item)>0 pero sigue sin entrar en el else{}, así que no lo hace bien.

¿¿¿Alguna idea??? ¡¡Gracias!!
tammyrey
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-04-15 09:30 @437

Publicidad

Notapor explorer » 2009-05-08 04:51 @244

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (@array) {
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

Notapor tammyrey » 2009-05-08 04:57 @248

Lo siento pero eso no funciona... porque no tengo definido en ningún sitio un my @item... está como my $item, y no lo puedo cambiar, porque se usa en muchos sitios...
tammyrey
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-04-15 09:30 @437

Notapor explorer » 2009-05-08 05:02 @251

A ver... si dices que $item es un arreglo, yo supongo que quieres decir que $item almacena una referencia a un arreglo ($item es una variable escalar).

Por lo tanto, para acceder al contenido de ese arreglo, tenemos que desreferenciarlo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (@$item) {
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

Notapor tammyrey » 2009-05-08 05:07 @255

Lo siento... eso tampoco funciona... me da el siguiente error:

Código: Seleccionar todo
Not an ARRAY reference


Lo que he hecho es, comprobar si uno de los campos del array que debe venir cubierto, no lo está... poniendo lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($item->{'barcode'}){
    # ...
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Así, si funciona :)
tammyrey
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-04-15 09:30 @437

Notapor explorer » 2009-05-08 05:22 @265

Entonces $item no contiene un referencia a un arreglo como nos has hecho creer, sino una referencia a un diccionario (hash).

Entonces, te valdría con un
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (%$item) {
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

Notapor tammyrey » 2009-05-08 05:58 @290

Perdona entonces por mi mala explicación :( soy muy inexperta...

Pues efectivamente, debe ser una referencia a un hash porque así sí funciona.

¡¡¡¡Muchas gracias por estar siempre ahí!!!!
tammyrey
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-04-15 09:30 @437


Volver a Básico

¿Quién está conectado?

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

cron