typestar

Desreferencia postfija en Perl

Dos escrituras de la misma desreferencia: @$ref con signo inicial y el postfijo $ref->@*.

use strict;
use warnings;

my $nums  = [3, 1, 4, 1, 5];
my $entry = { name => "ada", langs => ["perl", "c"] };

my @classic = @$nums;        # sigil-first deref
my @postfix = $nums->@*;     # postfix reads left to right
print "classic: @classic\n";
print "postfix: @postfix\n";

print "langs: ", join(", ", $entry->{langs}->@*), "\n";
print "keys: ", join(" ", sort keys $entry->%*), "\n";
print "count: ", scalar $nums->@*, "\n";

Cómo funciona

  1. @$nums y $nums->@* producen la misma lista; el postfijo se lee de izquierda a derecha.
  2. Los accesos profundos quedan lineales: $entry->{langs}->@* no necesita llaves alrededor.
  3. $entry->%* desreferencia un hashref, así que keys y sort aplican directo.
  4. scalar $nums->@* cuenta elementos, igual que lo haría la forma con signo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
430
Tokens
110
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 94 segundos.

Escribe este fragmento

Paso 3 de 3 en Archivos y Perl moderno; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →