Red de conocimiento informático - Material del sitio web - Cómo entender Glob en lenguaje Perl

Cómo entender Glob en lenguaje Perl

Este artículo asume que usted ya está familiarizado con las citas en Perl. Respecto a los globos de Perl, el autor recomienda leer el Capítulo 3 de la primera edición de Programación avanzada en Perl y el Capítulo 1 de la segunda edición. El autor completó este artículo después de leer el contenido anterior y realizar ciertos ejercicios. Todos sabemos que las referencias de Perl son similares a los punteros de C. Puntero C:

my $a = 3; my $ra = \$a; La referencia puede verse simplemente como un almacenamiento de la dirección de la variable: $a $ra3 La dirección de la variable $a en varios idiomas. , Existe un concepto de tabla de símbolos (Tabla de símbolos). La tabla de símbolos almacena símbolos de diferentes ámbitos. Los símbolos aquí se refieren a los diversos nombres que usamos al programar, incluidos nombres de variables, nombres de funciones, etc. Por ejemplo, "a", "pa", "ra", etc. anteriores son todos símbolos. Mire el siguiente código: mi $a = "sdd"; mi $b = 34; mi @b = (2,3); mi %b = (nombre => 'yo', edad => 28); b { print "hello\n" } Tabla de símbolos generada: ......símbolo a La dirección de la variable $a......símbolo b La dirección de $b @La dirección de b %b La dirección de la función b Dirección... Como puede ver, el símbolo b contiene referencias a múltiples variables y funciones. En Perl, los símbolos también se denominan globos. El símbolo b y el símbolo a se pueden representar mediante *b y *a respectivamente. Una aplicación básica de glob es alias: $a = 10; *b = *a; print $b ."\n"; print $a . ......*a\$a......*b\$a...... Algunos alias se pueden implementar asignando valores a glob: $a = 6; 1,2 ); @b = (5,6); imprimir $a "\n"; *b = \$b = 7; imprimir $a . : .. ....*a\$a\@a...*b\$a\@b... Como puede ver, solo los escalares son iguales, las matrices aún están separadas. También se puede utilizar para pasar parámetros: sub cambio { *b = shift; $b = "cc" } $a = "tt"; print $a . "\n"; Resultado de la ejecución: tt cc Se dice que pasar parámetros a través de glob es mucho más rápido que pasar referencias. Los diferentes ámbitos tienen diferentes tablas de símbolos: las funciones tienen sus propias tablas de símbolos y cada paquete tiene su propia tabla de símbolos. Tenga en cuenta