perl | mi palabra clave

mi palabra clave en Perl declara que la variable enumerada es local para el bloque que la contiene en el que está definida. El propósito de my es definir el alcance estático . Esto se puede usar para usar el mismo nombre de variable varias veces pero con diferentes valores.
 
Nota: Para especificar más de una variable bajo mi palabra clave, se utilizan paréntesis.

Sintaxis: mi variable

Parámetro:
variable: a definir como local

Devoluciones:
no devuelve ningún valor.

Ejemplo 1:

#!/usr/bin/perl -w
  
# Local variable outside of subroutine
my $string = "Geeks for Geeks";
print "$string\n";
  
# Subroutine call
my_func();
print "$string\n";
  
# defining subroutine 
sub my_func
{
    # Local variable inside the subroutine
    my $string = "This is in Function";
    print "$string\n";
    mysub();
}
  
# defining subroutine to show
# the local effect of my keyword
sub mysub 
{
    print "$string\n";
}

Producción:

Geeks for Geeks
This is in Function
Geeks for Geeks
Geeks for Geeks

Ejemplo 2:

#!/usr/bin/perl -w
  
# Local variable outside of subroutine
my $string = "Welcome to Geeks";
print "$string\n";
  
# Subroutine call
my_func();
print "$string\n";
  
# defining subroutine 
sub my_func
{
    # Local variable inside the subroutine
    my $string = "Let's GO Geeky!!!";
    print "$string\n";
    mysub();
}
  
# defining subroutine to show
# the local effect of my keyword
sub mysub 
{
    print "$string\n";
}

Producción:

Welcome to Geeks
Let's GO Geeky!!!
Welcome to Geeks
Welcome to Geeks


¿Cómo definir el alcance dinámico?

Lo contrario de «mi» es «local». La palabra clave local define el alcance dinámico.

# A perl code to demonstrate dynamic scoping 
$x = 10; 
sub f 
{ 
   return $x; 
} 
sub g 
{ 
   # Since local is used, x uses   
   # dynamic scoping. 
   local $x = 20; 
  
   return f(); 
} 
  
print g()."\n"; 

Publicación traducida automáticamente

Artículo escrito por Code_Mech y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *