[Brasil-PM] Fwd: Secret operators: the documentation

Gabriel Vieira gabriel.vieira em gmail.com
Sexta Março 16 05:49:06 PDT 2012


Olá pessoal,

há alguns dias o Philippe Bruhat (BooK) levantou uma discussão na
lista "Fun with Perl"[1] sobre um 'operador secreto' que ele
descobrira e nomeu de 'Sperm', ou 'Esperma'. :)

O operador é bem interessante, ele se utiliza do "Inchworm operator"
(~~), o qual 'transforma' o conteúdo passado em escalar, combinado ao
operador diamante (<>), para fazer com que a entrada seja apenas uma
nova linha.

Código:
----8<----
> perl
use Data::Printer;
my @sobrinhos_do_donald = map { $_ = ~~<>; chomp; $_ } 1..3;
print p @sobrinhos_do_donald;
Huguinho
Zezinho
Luisinho
[
    [0] "Huguinho",
    [1] "Zezinho",
    [2] "Luisinho"
]
---->8----

* O uso do chomp se dá pelo caractere de quebra de linha permanecer na entrada.

E, como sugestão do próprio BooK, caso seja de interesse do
desenvolvedor receber um número como entrada, que tal usar o operador
fertilização?! ;P

----8<----
perl -MData::Printer -E 'my $n = ~~<>+0; say $n'
---->8----

A discussão, divertida aliás, teve da escolha do nome (tendo 'pipa'
como sugestão) chegando a outros operadores e documentações.. o que
levou o BooK a dar continuidade a uma documentação que ele já vinha
escrevendo.

O progresso da documentação pode ser observado em
https://github.com/book/perlsecret/blob/master/perlsecret.pod, e está
aberto a patches.

Vale a pena dar uma lida, entender como a combinação de operadores
funciona, e aprender a fazer uso (com moderação, não deixe seu código
um enigma :) ).

Ao final de uma documentação mais estável, ele pretende enviar como
patch ao p5p. Bom, né?

Conhece um operador secreto? Que tal ter o seu nome na documentação
oficial do Perl?! ;)


[1] http://www.mail-archive.com/fwp@perl.org/msg03909.html


Abraços.

-- 
Gabriel Vieira


Mais detalhes sobre a lista de discussão Brasil-PM