El alcance de una variable es la parte del programa donde se puede acceder a la variable. Un ámbito también se denomina como la visibilidad de las variables en un programa. En Perl, podemos declarar variables globales o variables privadas . Las variables privadas también se conocen como variables léxicas .
Alcance de las variables globales
Las variables globales se pueden usar dentro de cualquier función o cualquier bloque creado dentro del programa. Es visible en todo el programa. Las variables globales se pueden usar directamente y son accesibles desde cualquier parte del programa.
Ejemplo 1: La variable $nombre se declara al principio del código. Será visible hasta el final del archivo en todas partes. Incluso dentro de los bloques. Incluso si están en las declaraciones de funciones. Si cambiamos la variable dentro del bloque, eso cambiará el valor del resto del código. Incluso fuera del bloque.
# Perl program to illustrate the # Scope of Global variables # declaration of global variable $name = "GFG"; # printing global variable print "$name\n"; # global variable can be used # inside a block, hence the we # are taking a block in which # we will print the value of # $name i.e. global variable { # here GFG will print print "$name\n"; # values in global variable can be # changed even within a block, # hence the value of $name is # now changed to "GeeksforGeeks" $name = "GeeksforGeeks"; # print function prints # "GeeksforGeeks" print "$name\n"; } # changes made inside the above block' # are reflected in the whole program # so here GeeksforGeeks will print print "$name\n";
GFG GFG GeeksforGeeks GeeksforGeeks
Ejemplo 2:
# Perl program to illustrate the # Scope of Global variables # declaration of global variables $name = "GFG"; $count = 1; # printing global variables print $count." ".$name."\n"; $count++; # Block starting { # global variable can be used inside # a block, so below statement will # print GFG and 1 print $count." ".$name."\n"; # incrementing the value of # count inside the block $count++; } # taking a function sub func { # Global variable, $count and $name, # are accessible within function print $count." ".$name."\n"; } # calling the function func();
1 GFG 2 GFG 3 GFG
Alcance de las variables léxicas (variables privadas)
Las variables privadas en Perl se definen usando mi palabra clave antes de una variable. mi palabra clave confina las variables en una función o bloque en el que se declara. Un bloque puede ser un bucle for, un bucle while o un bloque de código con llaves alrededor. El alcance de la variable local es local, su existencia se encuentra entre esas dos llaves (bloque de código), fuera de ese bloque esta variable no existe. Estas variables también se conocen como variables léxicas.
Nota: Cuando se utilizan variables privadas dentro de una función o bloque, ocultan las variables globales creadas con el mismo nombre. Cuando llamamos a una subrutina con una variable privada, se puede usar dentro de esa función. Tan pronto como la subrutina sale, las variables privadas ya no se pueden usar.
Ejemplo:
# Perl program to illustrate the # scope of private variables # declaration of global variable $name = "Global"; $count = 1; # printing global variables print $count." ".$name."\n"; # incrementing the value of count # i.e it become 2 $count++; # block starting { # declaring private variable by using my # keyword which can only be used # within this block my $new_name = "Private"; # global variables are # accessible inside block print $count." ".$name."\n"; # incrementing the value # of global variable # here it become 3 $count++; print $name." and ".$new_name."\n"; } # $new_name variable cannot # be used outside, hence nothing # is going to print print "Variable defined in above block: ".$new_name."\n"; # declaring function sub func { # this private variable declaration # hides the global variable which define # in the beginning of program my $name = "Hide"; print $count." ".$name."\n"; } # calling the function func();
1 Global 2 Global Global and Private Variable defined in above block: 3 Hide
Variables del paquete
En Perl, tenemos un tipo más de alcance llamado Package Scoping. Esto se usa cuando necesitamos crear variables que se puedan usar exclusivamente en diferentes espacios de nombres”. main ” es el espacio de nombres predeterminado en todos los programas de Perl. Los espacios de nombres en Perl se definen mediante la palabra clave del paquete .
Ejemplo:
# Perl program to illustrate # the Package Variables # variable declared in # main namespace $var1 = "Main Namespace"; print "Value of Var1: ".$var1."\n"; # package declaration # Pack1 is the package package Pack1; # since $var1 belongs to main namespace, # so nothing will print inside Pack1 # namespace print "Value of var1: ".$var1."\n"; # variable declared in Pack1 namespace # having same name as main namespace $var1 = "Pack1 Namespace"; # here $var1 belongs to Pack1 namespace print "Value of var1: ".$var1."\n"; # in-order to print variables # from both namespace, use # following method print "Value of var1: ".$main::var1."\n"; print "Value of var1: ".$Pack1::var1."\n";
Value of Var1: Main Namespace Value of var1: Value of var1: Pack1 Namespace Value of var1: Main Namespace Value of var1: Pack1 Namespace
Nuestra palabra clave en Perl: «nuestra» palabra clave solo crea un alias para una variable de paquete existente con el mismo nombre. nuestra palabra clave permite usar una variable de paquete sin calificarla con el nombre del paquete, pero solo dentro del alcance léxico de la declaración » nuestro «. Una variable declarada con nuestra palabra clave declara un alias para una variable de paquete que será visible en todo su alcance léxico, incluso más allá de los límites del paquete .
# Perl program to illustrate the use # of our keyword # Pack1 namespace declared # by using the package keyword package Pack1; # declaring $Pack1::first_name # for rest of lexical scope our $first_name; $first_name = "Shashank"; # declaring $Pack1::second_name for # only this namespace $second_name; $second_name = "Sharma"; # Pack2 namespace declared package Pack2; # prints value of $first_name, as it # refers to $Pack1::first_name print "first_name = ".$first_name."\n"; # It will print nothing as $second_name # does not exist in Pack2 package scope print "second_name = ".$second_name."\n";
first_name = Shashank second_name =
Publicación traducida automáticamente
Artículo escrito por Shashank_Sharma y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA