[Cascavel-pm] Perl Intro

Nilson Santos acid06 em gmail.com
Terça Junho 7 08:38:03 PDT 2005


On 6/7/05, Alceu R. de Freitas Jr. <glasswalk3r em yahoo.com.br> wrote:
> Se você permitir uma sugestão, eu diria para você
> incluir uma ou duas páginas dizendo o que pode ser
> feito com Perl, talvez mostrando algumas aplicações de
> grande porte. Muita gente que pelo menos ouviu falar
> de Perl acha que ele é apenas um shell script mais
> complicado.

Acho que essa sugestão se tornaria principalmente relevante caso o
público tivesse uma parcela de pessoas mais "orientadas a negócio".
Mas de qualquer forma é relevante.

Quanto ao documento em si, ele está ótimo. Gostaria de fazer algumas
sugestões que poderiam talvez fazer com que o documento ficasse um
pouco mais completo.

Na parte "Um pouco de História": como são citados exemplos de
linguagens influenciadas pelo Perl, talvez fosse interessante citar o
exemplo de expressões regulares em que a implementação de Perl
atualmente é o "de facto standard", utilizada como referência na
implementação do recurso em outras linguagens e talvez citar o PCRE
também. Porém, concordo que talvez isso seja um pouco demais para um
curso básico, mas só citar que quase todas as linguagens modernas tem
um "pedacinho" de Perl hoje em dia talvez seja algo interessante.

Na "Nota" da seção 2.1: acredito que talvez o comentário leve as
pessoas a acreditar que, se fizerem:

$var = "5";

Não poderão (ou terão resultados imprevistos) ao fazer, em seguida:

print $var + 1;

Sendo que o perl irá DWYM corretamente e imprimir "6" na tela. Então
talvez seja importante citar que o Perl tenta fazer as conversões dos
tipos internos automáticamente e que se uma string representa um
número, ele irá sem problemas transformá-la em um número, caso ocorra
uma operação matemática sobre ela.

Na "Nota" da seção 2.2: na verdade, na verdade, a posição inicial de
uma array em Perl não é necessariamente *sempre* é representada pelo
índice zero ( 0 ). O índice inicial de array é controlado pela
varíavel especial $[. Ou seja, se alguém quiser fazer as arrays de
Perl funcionarem como as arrays de Pascal, por exemplo, basta que se
defina $[ = 1. Porém, concordo que esse detalhe pode até assustar as
pessoas de um curso básico de Perl mas, por outro lado, também pode
ilustrar a enorme flexibilidade de Perl, então cabe a você decidir o
que fazer. Talvez modificar o "sempre" para "normalmente" seria a
modificação perfeita. Caso alguém perguntasse "porque normalmente?" aí
viria uma explicação de que existe a possibilidade de se alterar,
porém isso é muito pouco utilizado.

Em outra nota da mesma seção 2.2, mais abaixo, tem um pequeno erro:
arrays são interpoladas *sim*!
Para garantir que eu não estaria falando bobagem, até fiz um
testezinho bobo, com warnings e strict ligado, para garantir que
funcionaria em todos os casos:

use warnings;
use strict;
my @array = (12,24,36);
print "$array[1]";

Imprime "24" na tela, como esperado.
Além disso, existe a interpolação na forma:

print "@array";

Que, no caso acima, imprimiria "12 24 36" na tela. O comportamento
dessa interpolação é equivalente à: join($", @array). $" é a variável
especial que determina qual é o caracter que vai ser utilizado no
"join" dos elementos.

Na seção 2.3: talvez fosse interessante citar que a utilização do
operador "=>" não é meramente estética. Ele tem o efeito de avaliar o
que está à sua esquerda como string, mesmo se for uma bareword. Por
isso, é uma construção válida, sob quaisquer circunstâncias, o
seguinte:

my %hash = (
  Dom => "Domingo",
  Seg => "Segunda",
  Ter => "Terça",
  Qua => "Quarta",
  Qui => "Quinta",
  Sex => "Sexta",
  Sáb => "Sábado"
);

Bom. É isso. ;)
Espero que eu possa ter contribuído de alguma forma para o sucesso do
curso que você vai ministrar.

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm