El operador de . en Perl

El operador punto se utiliza en Perl para la concatenación de cadenas (conexión) de filas.

Ejemplo:

▶ Run
#!/usr/bin/perl

print 'ABC' . 'DEF';

El programa mostrará en pantalla la cadena de 'ABCDEF'.

En este ejemplo, el operador punto se aplica a dos líneas escritas en el código del programa (como se llaman cadenas "de los literales de cadena").

Normalmente, como operandos de un operador de punto de . son los literales de cadena escalar las variables o los resultados del trabajo de otras funciones.

La cadena y el número de

El operador de . siempre trabaja con sus argumentos como con cadenas. El resultado de estas cuatro operaciones la misma cadena de '11'.

  • 1 . 1
  • 1 . '1'
  • '1' . 1
  • '1' . '1'

Y eso está bien. Se puede perfectamente, sin problemas de concatenar el número de la fila y el resultado será exactamente como esperas.

El uso de la matriz como operando

He aquí un ejemplo de un programa en que la matriz de конкатенируется con cadenas con el operador .:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print 'A' . @arr . 'B';

El programa mostrará en pantalla la cadena de 'A3B'.

'A' . @arr . 'B' es lo mismo que 'A' . scalar(@arr) . 'B'.

Cuando se utiliza la matriz de un operador de punto de . matriz se utiliza en скалярном contexto, y la matriz de en скалярном el contexto devuelve el número de elementos en la matriz.

El uso de hash como operando

He aquí un ejemplo de un programa en que el hash конкатенируется con cadenas con el operador .:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 'one',
    b => 'two',
);

print 'A' . %h . 'B';

Dependiendo de la versión de Perl, el programa mostrará en pantalla o una línea similar a 'A2/8B', o una cadena 'A2B'.

'A' . %h . 'B' es lo mismo que 'A' . scalar(%h) . 'B'.

De la misma manera como en el caso de la matriz, cuando se utiliza un hash con el operador punto . hash se utilizado en скалярном contexto.

A partir de la versión de Perl 5.26 hash en скалярном el contexto devuelve el número de pares de elementos en este хеше. Y, en la versión de Perl hasta 5.26 hash en скалярном el contexto de la devuelve información sobre el funcionamiento interno de hash.

El uso de enlaces a sabu como operando

He aquí un ejemplo de un programa en que la referencia a sabu конкатенируется con cadenas con el operador .:

▶ Run
#!/usr/bin/perl

my $sub = sub {
   return 42;
};

print 'A' . $sub . 'B';

Perl a la versión 5.22 muestra algo como ACODE(0x1452f00)B, a partir de 5.22 en la pantalla será aproximadamente la misma línea, sólo habrá más números después de 0x: ACODE(0x561e87413ed8)B.

Diferentes ejecuciones del programa se muestran diferentes números.

'A' . $sub . 'B' es lo mismo que 'A' . scalar($sub) . 'B'. Cuando se utiliza en скалярном el contexto de la anónima saba devuelve una cadena tipo CODE(0x10dbf00) (información sobre donde está en memoria, el código de saba, el conocimiento necesario muy rara vez).

El carácter de subrayado _

Para la concatenación de cadenas en Perl se utiliza el operador punto .. El operador subrayado _ en Perl no. Pero el operador de _ es popular en la biblioteca Perl Template::kit de herramientas y en esta biblioteca se utiliza para la concatenación.

utf8 bandera

En el caso de que en la concatenación participa al menos una fila que tiene el interior del pabellón, lo que significa que el contenido está codificado en utf8, es el resultante de la fila esta bandera también. He aquí un ejemplo de código que confirma este comportamiento:

▶ Run
#!/usr/bin/perl

use utf8;

my $str_with_flag = 'раз-два-три';

my $str_without_flag = 'one-two-three';

print utf8::is_utf8($str_with_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag) . "\n"; # prints empty string

print utf8::is_utf8($str_with_flag . $str_without_flag) . "\n"; # prints 1
print utf8::is_utf8($str_without_flag . $str_with_flag) . "\n"; # prints 1

Temas relacionados

Otros articulos