• Publicidad

Variables locales y privadas

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

Variables locales y privadas

Notapor Marinavf » 2008-01-20 14:04 @628

¿Alguien sabe la diferencia que existe entre las variables locales y privadas en Perl?

Gracias por adelantado
Marinavf
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2008-01-20 14:00 @625

Publicidad

Notapor creating021 » 2008-01-20 15:35 @691

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

Notapor explorer » 2008-01-20 18:59 @832

¿Te refieres a la diferencia entre my() y local()?
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

Notapor danimera » 2008-01-23 12:49 @576

Hasta donde entiendo las variables locales son usadas dentro del ámbito de una función.

Las variables privadas solamente pueden ser accedidas cuando se trabaja con clases y métodos. "Eso creo"

Cuando en Perl declaro con my() realmente es una variable global si la declaro al inicio de mi script ^^, pero es privada cuando la declaro dentro de una función.

Quizá me equivoco pero con my() declaro variables tanto globales como privadas.

Ahora lo de locales sí no sé.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Notapor Jenda » 2008-01-23 18:04 @795

Creo que uno de los mejores artículos sobre la diferencia entre my y local está aquí: http://perl.plover.com/FAQs/Namespaces.html

Hay también versiones en francés, italiano y alemán. Podría tratar de trasladarlo en español, pero mi español es malo.

Jenda
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Notapor Jenda » 2008-01-23 18:28 @811

danimera escribiste:Hasta donde entiendo las variables locales son usadas dentro del ámbito de una función.

Las variables privadas solamente pueden ser accedidas cuando se trabaja con clases y métodos. "Eso creo".


Pues, es más o menos verdad. ¡Pero! la cosa es un poco más difícil en Perl. De primero, no hay variables privadas en este sentido en Perl. Hay algunos módulos para ayudar a producir clases que tienen algo así pero no Perl mismo. Las variables locales en un sentido similar a lo de tu primera frase se declaran con my(). La diferencia es que esos variables no existen dentro de alguna función pero dentro de un bloque (no sé cómo se dice en español). Una variable así se puede usar desde la declaración hasta el } que cierra el bloque que contiene la declaración. O hasta el fin del fichero:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub foo {
   my $x = 5; # declaracion
   if (1 < 2) {
      my $y = 8;
      print $x+$y, "\n";
   }
   print $x+$y, "\n"; # ¡¡¡FALTA!!! $y ya no existe !
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Además, Perl tiene local(). Es algo un poco raro y no es fácil describirlo. ¡local($x) no es una declaración! Un local significa: recuerda el valor de esa variable, limpia la variable y cuando salimos del este bloque reajusta la variable al valor que has recordado. Lo que hace la situación más complicada es que no se puede local()izar las variables declaradas con my(), solo las variables global.

No te preocupes por eso y siempre usa my().

Normalmente local() se debe usar solo cuando necesitas por un rato cambiar el valor de alguna variable especial, algo como $/ o $;.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

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