Sigo viendo la palabra clave "mi" delante de los nombres de las variables en los scripts de Perl de ejemplo en línea, pero no tengo idea de lo que significa. Intenté leer las páginas del manual y otros sitios en línea, pero tengo dificultades para discernir para qué sirve dada la diferencia entre cómo veo que se usa y el manual.
Por ejemplo, se usa para obtener la longitud de la matriz en esta publicación: Encuentre el tamaño de una matriz en Perl
Pero el manual dice:
A my declara que las variables enumeradas son locales (léxicamente) al bloque, archivo o evaluación adjunto. Si se incluye más de un valor, la lista debe colocarse entre paréntesis.
¿Qué hace y cómo se usa?
perl
scope
declaration
Puño de la furia
fuente
fuente

myno tuvo en cuenta en lo más mínimo. Es el operador de asignación escalar (=) que aplicó el contexto escalar en@arr.Respuestas:
myrestringe el alcance de una variable. El alcance de una variable es donde se puede ver. Reducir el alcance de una variable a donde se necesita la variable es un aspecto fundamental de una buena programación. Hace que el código sea más legible y menos propenso a errores, y da como resultado una gran cantidad de beneficios derivados.Si no declara una variable mediante
my, se creará una variable global en su lugar. Esto debe evitarse. El usouse strict;le dice a Perl que desea evitar la creación implícita de variables globales, por lo que siempre debe usaruse strict;(yuse warnings;) en sus programas.Lectura relacionada: ¿Por qué usar
use strict;yuse warnings;?fuente
varyleten JavaScript. Sin'use strict';JS le permitirá declarar nuevas variables globales sin ninguna de las palabras clave, lo que no se considera la mejor práctica.letyvarqué hace y cómo se deben utilizar?" Y sí, la respuesta sería aproximadamente la misma. (Lasletvars de JS son muy parecidas a lasmyvars de Perl , excepto que lasletvars no se pueden capturar)use strict;? Pero esa no era la cuestión, yuse strict;hace más que eso. O tal vez quisiste comunicar quemylimita el alcance de las vars comoletyvarhacer, pero esa es prácticamente la primera oración de la respuesta. 3) Si desea responder una pregunta de manera diferente, para eso están las Respuestas.Resumen rápido:
mycrea una nueva variable,localmodifica temporalmente el valor de una variableEn el siguiente ejemplo, $ :: a se refiere a $ a en el espacio de nombres 'global'.
$a = 3.14159; { my $a = 3; print "In block, \$a = $a\n"; print "In block, \$::a = $::a\n"; } print "Outside block, \$a = $a\n"; print "Outside block, \$::a = $::a\n"; # This outputs In block, $a = 3 In block, $::a = 3.14159 Outside block, $a = 3.14159 Outside block, $::a = 3.14159es decir,
localcambia temporalmente el valor de la variable, pero solo dentro del ámbito en el que existe.Fuente: http://www.perlmonks.org/?node_id=94007
Actualizar
Sobre la diferencia entre
ourymypor favor vea(Gracias a ThisSuitIsBlackNot ).
fuente
their?our: stackoverflow.com/questions/845060/…Variables privadas a través de my () es la documentación principal para
my.En el ejemplo de tamaño de matriz que menciona, no se usa para encontrar el tamaño de la matriz. Se usa para crear una nueva variable para contener el tamaño de la matriz.
fuente