É SIMPLES... Mas pode servir de ponto de partida... =] Divirta-se.
[]s > -----Mensagem original----- > De: RicardoFunke [mailto:[EMAIL PROTECTED] > Enviada em: quinta-feira, 22 de fevereiro de 2007 14:35 > Para: Davi Vidal > Assunto: Re: [OFF] subversion: bloquear commit de arquivos com nome > acentuado > > opa, manda pra mim então! valeu > > Em 22/02/07, Davi Vidal<[EMAIL PROTECTED]> escreveu: > > Hmmm... > > Quem quiser, me manda PVT que eu mando uma apostilinha de Perl que eu > tenho > > aqui... =] > > > > [EMAIL PROTECTED] > > > > []s > > > > > > > -----Mensagem original----- > > > De: RicardoFunke [mailto:[EMAIL PROTECTED] > > > Enviada em: quinta-feira, 22 de fevereiro de 2007 14:26 > > > Para: debian-user-portuguese@lists.debian.org > > > Assunto: Re: [OFF] subversion: bloquear commit de arquivos com nome > > > acentuado > > > > > > massa, que pena que eu não saiba nada sobre perl > > > > > > Em 22/02/07, Maxwillian Miorim<[EMAIL PROTECTED]> escreveu: > > > > On 2/21/07, RicardoFunke <[EMAIL PROTECTED]> wrote: > > > > > Dei uma olhada sobre os hook-scripts, como fazer um script para > isso > > > no svn? > > > > > > > > Eu não sei como funcionam, mas pode usar algo para comparar > expressões > > > > regulares com os caracteres especiais, por exemplo: > > > > > > > > No hook-script, antes de tudo tu chama um script em perl que tem > como > > > > parâmetro o nome do arquivo. Este script verifica se o nome tem > > > > caracteres especiais (isso é fácil com perl :). Se tiver retorna 1 > > > > senão 0. > > > > > > > > Depois o hook-script verifica o retorno do script de perl (vamos > > > > chama-lo verifica_nome.pl), se for 1 continua, senão não faz nada. > > > > > > > > Agora tá contigo, eu vou dar uma estudada nisso porque é uma coisa > > > > interessante... ;) > > > > > > > > > > > > -- > > > > Maxwillian Miorim <[EMAIL PROTECTED]> > > > > ---- > > > > Moo... Are you happy now? > > > > > > > > > > > >Title: Perlintro < Perldoc < TWiki
NOMEperlintro -- uma breve introdução ao PerlDESCRIÇÃOEste documento tem por intenção dar a você uma breve introdução à linguagem de programação Perl, com referências para documentações mais aprofundadas. É um guia inicial para aqueles que são novos na linguagem, e provê apenas informações para que você esteja apto a ler códigos escritos em Perl por outras pessoas e entender o que este faz, ou ainda escrever seus próprios programas iniciais. Este documento introdutório não tem por objetivo ser completo, e também não deseja ser totalmente correto. Em alguns casos, a perfeição foi sacrificada para que o objetivo de transparecer uma idéia seja alcançado. Você está avisado a seguir esta introdução com mais informações do manual encontradas no manual completo do Perl, cujo índice pode ser encontrado em perltoc. Neste documento, você encontrará referências para outras partes da documentação de Perl. Você pode ler esta documentação utilizando o comandoperldoc ou o mesmo método que você está utilizando para ler este documento.
O que é o Perl?O Perl é uma linguagem de programação de uso geral, originalmente desenvolvida para manipulação de textos, que agora é utilizada para uma infinidade de tarefas incluindo administração de sistemas, desenvolvimento web, programação de redes, desenvolvimento de interfaces gráficas, e muitos outros. A linguagem foi escrita para ser prática (fácil de utilizar, eficiente, completa) ao invés de bonita (pequena, elegante, mínima). Suas maiores características são sua facilidade de uso, que inclui o suporte tanto para programação procedural quanto para programação orientada à objetos, tem um poderoso suporte incluso na linguagem para processamento de textos, e uma das maiores coleções de módulos escritos por terceiros, o CPAN. Outras definições do Perl são dadas em perl, perlfaq1 e sem dúvida em outros lugares. A partir destas informações, podemos determinar que Perl é uma coisa diferente para cada pessoa, mas muitas pessoas pensam que é, no mínimo interessante, escrever sobre ela.Executando programas PerlPara executar um programa Perl, a partir da linha de comando do Unix:perl meuprograma.plUm método alternativo é colocar isto como a primeira linha do seu script: #!/usr/bin/env perl... e então executar seu script como /caminho/do/script.pl . O script deverá ser marcado como executável antes, então execute chmod 755 script.pl antes (no Unix).
Para mais informações, incluíndo instruções para outras plataformas como Windows e Mac OS, leia perlrun.
Visão básica da sintaxeUm programa ou script Perl consiste em um ou mais comandos. Cada comando é simplesmente escrito no script, um após o outro. Não há necessidade de existir uma funçãomain() ou algo do tipo.
Os comandos Perl são finalizados com um ponto-e-vírgula:
print "Alo, mundo";Os comentários inicializam com um sustenido ( # ):
# Isso e' um comentarioEspaços em branco são irrelevantes: print "Alo, mundo" ;... exceto dentro de strings com aspas: # isto deve imprimir o texto com uma quebra de linha no meio print "Alo mundo";Aspas duplas ou aspas simples podem ser utilizadas em torno de strings: print "Alo, mundo"; print 'Alo, mundo';Entretanto, apenas aquelas strings com aspas duplas podem "interpolar" variáveis e caracteres especiais como nova-linha ( \n ):
print "Alo, $nome\n"; # funciona! print 'Alo, $nome\n'; # exibe $nome\n literalmenteNúmeros não necessitam de aspas: print 42;Você pode utilizar parênteses para argumentos de funções ou omití-los de acordo com seu gosto. Elas são necessárias apenas para deixar claro a precedência das operações. print("Alo, mundo\n"); print "Alo, mundo\n";Informações mais detalhadas sobre a sintaxe do Perl pode ser encontrada em perlsyn. Tipos de variáveis em PerlPerl tem três variáveis principais: scalars, arrays e hashes.
my $variaveis = { scalar => { descricao => "item unico", simbolo => '$', }, array => { descricao => "lista ordenada de itens", simbolo => '@', }, hash => { descricao => "pares chave/valor", simbolo => '%', }, }; print "Scalars comecam com um $variaveis->{'scalar'}->{'simbolo'}\n";Maiores informações neste tópico de referências podem ser encontradas em perlreftut, perllol, perlref e perldsc. Escopo de variáveisApesar de todos os exemplos na seção anterior utilizarem a sintaxe:tax:my $var = "valor";O comando my não é requerido; você pode utilizar apenas:
$var = "valor";Entretanto, a utilização acima irá criar variáveis globais em todo o seu programa, o que é uma má prática de programação. my cria uma variável em um escopo léxico, ao invés do escopo global. Estas variáveis são escopadas no bloco (isto é, diversos comandos envoltos por chaves { } ) em que foram definidas.
my $a = "foo"; if ($alguma_condicao) { my $b = "bar"; print $a; # exibe "foo" print $b; # exibe "bar" } print $a; # exibe "foo" print $b; # nao exibe nada; $b saiu de escopo.Utilizando my em conjunto com use strict; no início de seus scripts Perl, significa que o interpretador irá avisar certos erros de programação mais comuns. No exemplo acima, o último print $b irá causar um erro em tempo de compilação e prevenir você de executar o programa. A utilização de strict é muito recomendada.
Construções condicionais e de iteraçãoPerl possui a maioria de construções condicionais e de iteração, exceto pela construção case/switch (caso você realmente a queira, existe o módulo Switch no Perl 5.8 e mais atual, e no CPAN. Veja a seção de módulos abaixo para obter mais informações sobre módulos e CPAN). As condições podem ser qualquer expressão Perl. Veja uma lista de operadores na próxima sessão, para informações sobre comparações e operadores lógicos booleanos, que geralmente são utilizados em comandos condicionais.
Operadores e funções embutidasO Perl vêm com uma grande seleção de funções embutidas. Algumas daquelas que nós já vimos incluemprint , sort e reverse . Uma lista delas é informada no início de perlfunc e você pode facilmente obter mais infomações sobre qualquer função utilizando perldoc -f função .
Operadores do Perl são documentados em detalhes em perlop, porém aqui estão alguns dos mais comuns:
= , como por exemplo:
$a += 1; # mesmo que $a = $a + 1 $a -= 1; # mesmo que $a = $a - 1 $a .= "\n"; # mesmo que $a = $a . "\n"; Arquivos e I/OVocê pode abrir um arquivo para entrada ou saída de dados utilizando a funçãoopen() . Ela é documentada em detalhes em perlfunc e perlopentut. Aqui está um resumo:
open(ENTRADA, "entrada.txt") or die "Nao foi possivel abrir o arquivo entrada.txt para leitura: $!"; open(SAIDA, ">saida.txt") or die "Nao foi possivel abrir o arquivo saida.txt para escrita: $!"; open(LOG, ">>meu.log") or die "Nao foi possivel abrir o arquivo meu.log em modo 'append': $!";Você pode ler de um filehandle aberto utilizando o operador <> . No contexto escalar, ele lê uma única linha de um filehandle, e em contexto de lista lê o arquivo inteiro, atribuíndo cada linha a um elemento da lista:
my $linha = <ENTRADA>; my @linhas = <ENTRADA>;Ler todo o arquivo de uma única vez é chamado slurping. Este procedimento pode ser útil porém pode trazer problemas de memória. A maioria do processamento de texto em arquivos pode ser feito uma linha por vez com as construções de iteração do Perl. O operador <> é visto com mais freqüência em um comando while :
while (<ENTRADA>) { # atribui à variável $_ uma linha de cada vez print "Acabei de ler essa linha: $_"; }Nós já vimos como imprimir para a saída padrão utilizando print() . Entretanto, print() pode ter um primeiro parâmetro opcional especificando em qual filehandle ele irá imprimir:
print STDERR "Este e' seu ultimo aviso.\n"; print SAIDA $registro; print LOG $mensagem;Quando você não tiver outras operações com seus filehandles abertos, você deve fechá-los (utilizando o comando close() ). Sendo bem honesto, o Perl irá finalizá-los para você caso você esqueça.
close ENTRADA; Expressões RegularesO suporte à expressões regulares no Perl é intensa e profunda, e é extensamente documentada em perlrequick, perretut? e outros lugares. Um resumo:
Escrevendo subrotinasEscrever subrotinas é fácil::sub log { my $mensagem = shift; print LOGFILE $mensagem; }O que é aquele shift ? Os argumentos de uma subrotina estão disponíveis através do array especial chamado @_ (veja perlvar para mais detalhes). O argumento padrão para a função shift é @_ . Então, my $mensagem = shift; extrai o primeiro item da lista de argumentos e o atribui em $mensagem .
Podemos manipular @_ de outras maneiras:
my ($mensagem, $prioridade) = @_; # comum my $mensagem = $_[0]; # incomum, e muito feioAs subrotinas podem também retornar valores: sub quadrado { my $num = shift; my $resultado = $num * $num; return $resultado; }Para maiores informações sobre como escrever subrotinas, veja perlsub. Programação orientada à objetos em PerlA programação orientada à objetos em Perl é relativamente simples e é implementada utilizando referências que sabem em qual tipo de objeto elas são baseadas, no conceito de Perl sobre o que são pacotes. Entretanto, este tipo de programação está muito além do escopo deste documento. Leia perlboot, perltoot, perltooc e perlobj. Como um programador Perl iniciante, a utilização mais comum de orientação a objetos em Perl será a utilização de módulos escritos por terceiros, que está documentada abaixo.Utilizando módulos PerlOs módulos de Perl provêm diversas funcionalidades para ajudá-lo a não reinventar a roda, e podem ser obtidos do CPAN (http://www.cpan.org/). Um grande número de módulos populares são incluídos com a distribuição padrão do Perl. As categorias dos módulos vão desde manipulação de textos à protocolos de rede e integração com banco de dados à gráficos. Uma lista categorizada dos módulos também está disponível no CPAN. Para aprender como instalar módulos obtidos do CPAN, leia perlmodinstall. Para aprender como utilizar um módulo em particular, utilize C Copyright © pelos autores contribuintes. Todo material nessa plataforma colaborativa é propriedade dos autores contribuintes. Idéias, solicitações, problemas com relação ao TWiki? Nos dê um retorno |