• Publicidad

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.

Array vacío

Notapor fgalves » 2006-12-28 08:27 @394

Hola a todos,

El caso es que tengo el siguiente código que obtiene la lista de ficheros de un directorio determinado:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
opendir(DIR, $reportsSourceFolder) || die "$0: ERROR: can't opendir $reportsSourceFolder: $!";
@reports = grep { -f "$reportsSourceFolder/$_"} readdir(DIR);
closedir DIR;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


El caso es que quiero comprobar si el array @reports esta vacío o no, para segun el caso, actuar en consecuencia.

Sirve un simple?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (@reports == '')
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Se que es una pregunta muy básica, pero es que no se como hacerlo.

Muchas gracias!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor fgalves » 2006-12-28 10:43 @488

me la respondo yo mismo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if (@reports) {
    # no vacio
}
else {
    #vacio
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor monoswim » 2006-12-28 11:29 @520

@reports devuelve el número de elementos que tiene el array...Para que se entienda bien el ejemplo anterior...

if (@array ==0){

}

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 explorer » 2006-12-28 19:24 @850

En Perl es fundamental entender el contexto en que se ejecuta una operación: contexto escalar y contexto lista.

Lo normal, con un array, es que lo manejemos siempre en modo lista, controlando todos sus elementos. Pero hay ocasiones en las que sólo nos interesa un dato suyo, por lo que necesitamos pasarlos a contexto escalar. En este caso, saber el número de elementos que tiene.

Y eso es lo que sucede dentro del if: lo estamos ejecutando en contexto escalar, y, un array en ese contexto nos devuelve el número de elementos.

Por eso queda muy natural decir
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( @array ) {
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En cambio, pensemos en un lugar donde queremos sacar en pantalla el número de elementos, pero resulta que si ponemos
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "Número de elementos: ", @array, "\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
no obtendremos ese resultado, sino que Perl lo ejecutará en contexto lista y nos mostrará todos los elementos. En este caso hay que echarle una manita para cambiar a contexto escalar:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "Número de elementos: ", scalar @array, "\n";
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


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado