Question | Answer |
1 de Janeiro, 1987 | Surgimento da Linguagem Perl com o Perl 1.000 |
5 de Junho, 1988 | Lançamento do Perl 2.000
A nova versão tinha suporte à chamada recursiva de sub-rotinas, operadores 'wait' e 'sort', além de melhorias no funcionamento de expressões regulares. |
18 de Outubro, 1989 | Lançamento do Perl 3.000
Na versão 3.000 era possível trabalhar com data binária corretamente, tinha funções de 'pack' e 'unpack' em estruturas binárias. Sub-rotinas poderiam ser passadas por referência, e outras diversas funções foram adicionadas. |
1 de Janeiro, 1991 | Publicação do livro Programming Perl
A primeira edição de Programming Perl por Larry Wall e Randal Schwartz é publicada por O'Reilly & Associates. |
21 de Março, 1991 — 1 de Janeiro, 1993 | Lançamentos de versões do Perl 4, e do MacPerl
O Perl 4.000 foi acompanhado por uma série de lançamentos de manutenção, culminando no Perl 4.036. Durante esse período houve o lançamento do MacPerl 4.0.2, para Macintosh, progredindo até o MacPerl 4.1.0. |
18 de Setembro, 1994 | Lançamento do Perl 5.000
O muito antecipado Perl 5.000 foi revelado. Houve uma completa re-escrita da linguagem. Dentre suas novas características pode-se notar a inclusão de objetos, referências e módulos. |
26 de Setembro, 1995 | CPAN (Comprehensive Perl Archive Network)
Como consequência do suporte a módulos, houve o estabelecimento da CPAN como um repositório para módulos de Perl. Hoje abrigando mais de 24 mil módulos para várias finalidades. |
5 de Maio, 1997 — 22 de Junho, 1998 | Lançamentos do Perl 5.004 e 5.005
A versão 5.004 entre outras coisas trouxe a inclusão do módulo CGI.pm, enquanto a versão 5.005 incluiu mais melhoras no funcionamento do regex, além do suporte a novos sistemas operacionais. |
1 de Janeiro, 2000 | Início do planejamento do Perl 6
Larry Wall fez um pedido de sugestões à comunidade. Tal processo gerou um conjunto de documentos (361RFC) que foram então utilizados para guiar o desenvolvimento do Perl 6. |
22 de Março, 2000 | Lançamento do Perl 5.6
Nessa versão houve a inclusão de suporte a sistemas 64-bit e a arquivos maiores, além da inclusão da palavra chave "our". |
1 de Janeiro, 2001 | Surgimento dos documentos 'Apocalypses' do Perl 6
Tais documentos resumiam os pedidos de sugestões à comunidade, além de apresentarem o design da próxima geração de Perl. |
8 de Junho, 2002 | Lançamento do Perl 5.8
O Perl 5.8, entre outras coisas, melhorou o suporte a unicode, adicionou uma nova implementação de thread, e adicionou mais módulos. |
1 de Janeiro, 2004 | Documentos 'Synopses' em construção
Tais documentos originalmente resumiriam os documentos 'Apocalypses', no entanto acabaram se tornando a especificação da linguagem do Perl 6. |
1 de Fevereiro, 2005 — 1 de Janeiro, 2006 | Desenvolvimento do Pugs
Audrey Tang começou a desenvolver o Pugs, interpretador para o Perl 6, escrito na linguagem de programação Haskell. No entanto, em 2006 o desenvolvimento acabou sendo deixado de lado por tempo indefinido. |
1 de Janeiro, 2007 | Início da construção do Rakudo Perl
Uma outra implementação de Perl 6 surgiu, conhecida como Rakudo Perl. Continuou obtendo atualizações mensais e hoje em dia é a mais completa implementação de Perl 6. |
18 de Dezembro, 2007 | Lançamento do Perl 5.10.0
A versão 5.10.0 foi lançada no aniversário de 20 anos da primeira versão de Perl. Incluia, entre outras coisas, declarações com switch e atualizações de expressões regulares. |
2 de Setembro, 2009 | Lançamento do Perl 5.11.0
Com a nova versão surgiu a proposta de atualizações mensais sobre a mesma, com o intuito de evitar bugs e melhorar a velocidade do desenvolvimento, também melhorando o planejamento em longo prazo do Perl 5. |
12 de Abril, 2010 | Lançamento do Perl 5.12.0
Em 2010 houve o lançamento da versão 5.12, que trouxe o operador Yada Yada, estruturas implícitas, suporte a DTrace e Unicode 5.2. |
4 de Maio, 2011 — 20 de Maio, 2012 | Lançamento das versões 5.14 e 5.16
Nos anos de 2011 e 2012 as versões 5.14 e 5.16 foram desenvolvidas, esta última tendo como característica principal a possibilidade de emular qualquer versão anterior do Perl, rodando scripts mais antigos que seriam n |
Significado | Perl significa "Practical Extraction and Report Language" |
Paradigma | Multiparadigma: funcional, imperativo, Orientação a objetos, reflexivo, estruturado, genérico |
Estilo de tipagem | Dinâmica |
Compilada ou Interpretada | Interpretada |
Tipos de dados | Escalar, Vetor (array), Hash (vetor associativo), Handle de um arquivo e Sub-rotinas. |
Declaração Escalar | $num
$joe
$pointer |
Declaração Array | @v
@list
@variable |
Declaração Hash | %people
%x
%this_is_a_hash |
Programando em Perl | #!/usr/bin/perl
print "Olá, Mundo!\n"; |
Comentário | Comentários podem ser inseridos no programa com o simbolo #, e tudo que estiver depois do # até o final da linha é ignorado (com exceção da primeira linha) a unica forma de realizar comentários por varias linhas é usando um # por linha. |
Operação de soma | $a = 1 + 2; # Soma 1 em 2 e armazena o resultado em $a |
Operação de subtração | $a = 3 - 4; # Subtrai 4 de 3 e armazena o resultado em $a |
Operação de Multiplicação | $a = 5 * 6; # Multiplica 5 por 6 |
Operação de Divisão | $a = 7 / 8; # Divide 7 por 8 e obtem 0,875 |
Operação de Potenciação | $a = 9 ** 10; # Eleva nove a décima potência |
Operação de Resto | $a = 5 % 2; # Armazena em $a o resto da divisão de 5 por 2 |
Operação de Incremento | ++$a; # Inclementa $a e depois retorna
$a++; # Retorna $a e depois inclementa |
Operação de Decremento | --$a; # Decrementa $a e depois retorna
$a--; # Retorna $a e depois decrementa |
Operações de Strings | $a = $b . $c; # Concatena $b com $c
$a = $b x $c; # $b é repetida $c vezes |
Atribuição | $a = $b; # Coloca em $a o conteúdo de $b
$a += $b; # Soma o valor de $b ao valor de $a
$a -= $b; # Subtrai o valor de $b do valor de $a
$a .= $b; # Concatena $b a $a |
Para adicionar um novo elemento no array | push(@frutas, "abacaxi"); |
Transforma uma variável array em uma variável escalar | $f = @frutas; |
Escopo das variáveis | $var = "value"; # Global
my $var = "value"; # Local |
Condicional | if ( condition ) {
...
} elsif ( other condition ) {
...
} else {
...
} |
Versão negada | unless ( condition ) {
...
} |
While | while ( condition ) {
...
} |
versão negada | until ( condition ) {
...
} |
For | for ($i = 0; $i <= $max; $i++) {
...
} |
Foreach | foreach my $key (keys %hash) {
print "The value of $key is $hash{$key}\n";
} |
Operadores Numericos | == Igualdade
! = Desigualdade
< Menor que
> Maior que
< = Menor ou igual
> = Maior ou igual |
Operadores de String | eq Igualdade
ne Desigualdade
lt Menor que
gt Maior que
le Menor ou igual
ge Maior ou igual |
Operadores Lógicos | && E
| | Ou
! Não |
Operadores Diversos | = Atribuição
. Concatenação
x Multiplicação
.. Faixa de operador ( cria uma
lista de números ) |
Expressões regulares simples | if (/foo/) { ... } # Verdadeiro se $_ contém "foo"
if ($a =~ /foo/) { ... } # Verdadeiro se $a contém "foo" |
Sub-Rotina | sub logger {
my $logmessage = shift;
open my $logfile, ">>", "my.log" or die "não foi possível abrir my.log: $!";
print $logfile $logmessage;
} |