Instruções básicas de Perl

by

Executando Perl

Inicialmente devemos criar um arquivo com a extensão .pl
Nas primeira linha devemos colocar a instrução abaixo:
#!/usr/bin/perl

Esta instrução é o caminho do interpretador do Perl.

para executar devemos usar a instrução abaixo:
$ perl exec1.pl

ou

$ ./exec1.pl

já que mencionamos o interpretador na primeira linha, lembrado de dar permissão para execução.

Seguem algumas instruções de linha de comando úteis

-w -> Solicita à Perl para avisar se há pratica de programação perigosa, pode ser usado “use warnings;”, mas só seŕa avisado dentro do contexto.
-T -> Ativa o modo “taint” da Perl. Neste modo toda entra de uma fonte externa é colocada em dúvida por padrão.
-c -> Verfica os erros de sintaxe de um script sem executar.
-d -> Executa o script usando um depurador imbutido da Perl.
-e -> Esta opção é usada quando define se que uma string seja o código a sere executado.

Scalar

Uma variável de scalar mantém apenas um único item dos dados.
Toda variável de scalar é precedida de $.

$texto = 'Ola mundo!';
$contador = 100;
$contador = 'Cem';

Em Perl a mesma variável pode conter texto e números a Perl se encarrega de converter conforme o contexto.

Questão das aspas.
Se uma string está entre aspas duplas  e contém nomes de variáveis, então essas variáveis são  substituidas por seus  valores no final da string.
Se a string está entre apóstrofes, então a subistituição da variável não ocorrerá.
É importante ressaltar que usando aspas duplas é possível usar os caracteres de especiais, como o \n \t entre outros.

O exemplo abaixo exemplifica o uso da aspas.


 1 #!/usr/bin/perl
 2
 3 use warnings;
 4 use strict;
 5
 6 my $marido,
 7 my $mulher;
 8 my $filha;
 9 my $mensagem1;
10 my $mensagem2;
11
12 $marido = "Dyego";
13 $mulher = "Vanessa";
14 $filha = "Beatriz";
15
16 $mensagem1 = "O $marido ama muito a $mulher e a $filha.\n";
17 $mensagem2 = 'O $marido ama muito a $mulher e a $filha.\n';
18
19
20 # imprime: O Dyego ama muito a Vanessa e a Beatriz.
21 print $mensagem1;
22
23 # imprime: O $marido ama muito a $mulher e a $filha.\n
24 print $mensagem2;

Array

Um array contém uma lista de valores scalars ordenados
Um array é precedido de @

@vazio = ();
@mamiferos = ('macaco', 'elefante', 'urso');
@repteis = ('jacaré', 'tartaruga', 'lagarto');
@animais = (@mamiferos, @repteis); # Obtém um array de de seis elementos.
($carnivoro, $hebivoro, $onivoro) = @repteis;

Para acessar os elementos do array dever ser usada a sintaxe abaixo:

$array[0]

Esta sintaxe pode ser usada para estabelecer e atribuir valor para um scalar.

$paquiderme = $mamiferos[1]; # valor é elefante

Quanto trabalhamos com o valor individual de array usamos o prefixo de um scalar $.

É possível acessar os últimos valores de um array usando o índice negativo.

$maritimo = $repteis[-2]; # valor é tartaruga

Para obter o tamanho de um array basta atribuir o array a um scalar.

$qtde = @animais; # valor retornado é 6

Há uma sutil diferença entre uma lista de um array

$contador = @repteis; # O conteúdo de $contador é 3
$ultimo = ('macaco', 'usro'); # O conteúdo de $ultimo é 'urso'

Algumas funções para manipulação de arrays

  • push – Acrescenta os elementos da lista ao final do array. (push ARRAY, LIST)
  • pop – Remove e retorna o último elementos do array. (pop ARRAY)
  • shift – Remove e retorna o primeiro elemento do array. (shift ARRAY)
  • unshift – Acrescenta os elementos da lista na frente do array. (unshift ARRAY, LIST)
  • splice – Remove e retorna os elementos LENGTH do ARRAY que começa no elemento OFFSET e os substitui pelos elementos da LIST. Se LIST for omitida então os elementos removidos serão simplesmente apagados. se LENGTH for omitido então tudo desde OFFSET até o final do ARRAY será removido. (splice ARRAY, OFFSET, LENGTH, LIST)

Map e Grep são outras listas bastante úteis de processamento de funções.

  • map – Executa o código e monta a lista com os valores de retorno sem avaliar se é verdadeiro
  • grep – Executa o código e monta a lista com os valores avaliando se o código retornado é verdadeiro.

Criando uma lista de quandrados

@numeros = (1..10);
@quadrados = map { $_ * $_ } @numeros;

Cria uma lista do os valores impares

@impares = grep { $_ % 2 } @numeros;

Abaixo segue um código que mostra o uso de arrays:


  1 #!/usr/bin/perl
  2
  3 use warnings;
  4 use strict;
  5
  6 my @vazio;
  7 my @mamiferos;
  8 my @repteis;
  9 my @animais;
 10 my $carnivoro;
 11 my $herbivoro;
 12 my $onivoro;
 13 my $paquiderme;
 14 my $maritimo;
 15 my $qtde;
 16 my $contador;
 17 my $ultimo;
 18 my $resultado;
 19 my @numeros;
 20 my @quadrados;
 21 my @impares;
 22
 23 # Imprime o array @vazio
 24 @vazio = ();
 25 print "Vazio:\n";
 26 print @vazio;
 27
 28 print "\n\n";
 29
 30 # Imprime o array @mamiferos
 31 @mamiferos = ('macaco', 'elefante', 'urso');
 32 print "Mamiferos:\n";
 33 foreach (@mamiferos){
 34   print "- $_ \n";
 35 }
 36 print "\n\n";
 37
 38 # Imprime o array @repteis
 39 @repteis = ('jacaré', 'tartaruga', 'lagarto');
 40 print "Repteis: \n";
 41 foreach (@repteis){
 42   print "- $_ \n";
 43 }
 44 print "\n\n";
 45
 46 # Imprime o array @animais
 47 @animais = (@mamiferos, @repteis); # Obtém um array de de seis elementos.
 48 print "Animais:\n";
 49 foreach(@animais){
 50   print "- $_ \n";
 51 }
 52 print "\n\n";
 53
 54 # Imprime os conteúdos do array atribuido as variáveis scalar
 55 ($carnivoro, $herbivoro, $onivoro) = @repteis;
 56 print "Carnivoro: $carnivoro \n";
 57 print "Herbivoro: $herbivoro \n";
 58 print "Onivoro: $onivoro \n";
 59
 60 print "\n\n";
 61
 62 # Imprime urso
 63 print "Imprime o 3º elemento do array animais: ";
 64 print $animais[2];
 65
 66 print "\n\n";
 67
 68 # Imprime Elefante
 69 print "Paquiderme: ";
 70 $paquiderme = $mamiferos[1];
 71 print $paquiderme;
 72
 73 print "\n\n";
 74
 75 # Imprime Tartaruga
 76 print "Réptil marítimo: ";
 77 $maritimo = $repteis[-2];
 78 print $maritimo;
 79
 80 print "\n\n";
 81
 82 # Imprime o tamanho do array
 83 $qtde = @animais;
 84 print "Temos $qtde animais.";
 85
 86 print "\n\n";
 87
 88 # Mostra a diferença entre lista e array
 89 $contador = @repteis; # O conteúdo de $contador é 3
 90 print "Temos $contador repteis \n";
 91 =comment
 92   O conteúdo de $ultimo é 'urso' e apresenta uma mensagem de erro,
 93   pois está sendo atribuido somente o último item, o correto é usar um array para receber a lista.
 94 =cut
 95 $ultimo = ('macaco', 'usro');
 96 print "Último item da lista: $ultimo";
 97
 98 print "\n\n";
 99
100 # Push - Acrescenta os elementos da lista ao final do array
101 push @repteis, ('cobra', 'iguana', 'camaleão');
102 print "Mais repteis: \n";
103 foreach (@repteis){
104   print "- $_ \n";
105 }
106
107 print "\n\n";
108
109 # pop - Remove e retorna o último elementos do array
110 $resultado = pop @mamiferos;
111 print "Foi retirado o $resultado da lista de mamiferos:\n";
112 foreach (@mamiferos){
113   print "- $_ \n";
114 }
115
116 print "\n\n";
117
118 # shift - Remove e retorna o primeiro elemento do array.
119 $resultado = shift @repteis;
120 print "Foi removido o $resultado da lista de repteis: \n";
121 foreach (@repteis){
122   print "- $_ \n";
123 }
124
125 print "\n\n";
126
127 # unshift - Acrescenta os elementos da lista na frente do array.
128 unshift @animais, ('arara', 'pavao', 'tucano');
129 print "Mais animais: \n";
130 foreach (@animais){
131   print "- $_ \n";
132 }
133
134 print "\n\n";
135
136 =comment
137   splice - Remove e retorna os elementos LENGTH do ARRAY que começa no elemento OFFSET
138            e os substitui pelos elementos da LIST
139 =cut
140 splice @animais, 0, 3, ('garça', 'harpia', 'gavião');
141 print "Alteradas as aves da lista de animais: \n";
142 foreach (@animais){
143   print "- $_ \n";
144 }
145
146 print "\n\n";
147
148 # map - Executa o código e monta a lista com os valores de retorno sem avaliar se é verdadeiro
149 @numeros = (1..10);
150 print "Números inteiros: \n";
151 foreach (@numeros){
152   print "$_, ";
153 }
154 @quadrados = map  { $_ * $_ } @numeros;
155 print "\nO quadrado dos números acima:\n";
156 foreach (@quadrados){
157   print "$_, ";
158 }
159
160 print "\n\n";
161
162 # grep - Executa o código e monta a lista com os valores avaliando se o código retornado é verdadeiro.
163 print "Mosta os números ímpares:\n";
164 @impares = grep { $_ % 2 } @numeros;
165 foreach (@impares){
166   print "$_ , ";
167 }
168
169 print "\n\n";
Anúncios

Tags: , , , , , , ,

4 Respostas to “Instruções básicas de Perl”

  1. Diogo Says:

    Maravilha 🙂

    Só não entendi o porquê de em $ultimo = (’macaco’, ‘urso’); a variável ficar com valor urso. Mas dada a variedade de coisas que eu não entendo em Perl, essa pode ficar por isso mesmo heheh 🙂

    Outra coisa é a utilidade do -e. Talvez dê até pra fazer um post só sobre isso. Tem algumas coisas legais tipo pra colocar o número em cada linha do arquivo:

    $ perl -e ‘print “$.: $_” while ()’ < /caminho/arquivo

    E outras coisas que não me ocorrem agora heheh

  2. Diogo Says:

    Hmm o comentário acima ficou esquisito. Era pra ter o sinal de menor e maior dentro dos parênteses do while…

    WordPress boboca!

  3. rui Says:

    Pesoal, uma pergunta.
    Tenho o perl instalado num linux, mas gostaria de de utilizar via windows.

    Qual o melhor IDE/forma de programar num ambiente deste genero?
    Como vcs fazem? Tem o perl do windows?

    Obrigado

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s


%d blogueiros gostam disto: