Guia de Consulta RĂĄpida
Perl DĂŠcio Jr.
Novatec Editora www.novateceditora.com.br
Guia de Consulta Rápida Perl de Décio Jr. Copyright2000 da Novatec Editora Ltda.
Todos os direitos reservados. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.
Revisão de texto: Sonia Maike
ISBN: 85-85184-80-9
Marcas registradas: Windows e WindowsNT são marcas registradas de propriedade da Microsoft Corporation.
Novatec Editora Ltda. Rua Cons. Moreira de Barros 1084 Conj. 01 02018-012 São Paulo - SP Brasil Fone: (0xx11) 6959-6529 Fax: (0xx11) 6950-8869 E-mail: novatec@novateceditora.com.br Site: www.novateceditora.com.br
2
Sumário Introdução ..................................................................................... 5 O que é Perl? .......................................................................... 5 Por que programar em Perl? .................................................. 5 Objetivo do Guia .................................................................... 5 Download e Instalação ................................................................. 6 Como obter e instalar Perl ..................................................... 6 Verificando a presença do Perl no sistema operacional ......... 6 Verificando a versão do Interpretador Perl ............................ 6 Iniciando ....................................................................................... 7 Executando uma instrução em Perl ........................................ 7 O Interpretador Perl ............................................................... 7 Executando um programa a partir de um arquivo .pl ............ 7 Comentários em Perl .............................................................. 8 Y2K e Perl ............................................................................. 8 Documentos on-line do Perl ......................................................... 9 Chamada do Interpretador Perl ................................................... 11 Literais ........................................................................................ 13 Numérico .............................................................................. 13 String .................................................................................... 13 Aspas, Interpolação e Perl ................................................... 14 Caracteres de Controle e Interpolação ................................. 14 Vetores .................................................................................. 14 Referência em Vetor ............................................................. 15 Hash (Vetor Associativo) ..................................................... 15 Referência em Hash ............................................................. 15 Declaração de Sub-rotinas ................................................... 15 Manipuladores de Arquivos (Filehandles) ........................... 16 Globs .................................................................................... 17 Here-Is (atribuição de texto ou documento) ........................ 17 Tokens Especiais .................................................................. 18 Tipos de Dados e Variáveis ........................................................ 19 Introdução ............................................................................ 19 Estrutura e Representação .................................................... 19 Variáveis em Perl são GLOBAIS por default ...................... 23 Exemplos de Variáveis ......................................................... 24 Typeglob (*) ......................................................................... 24 Referências ........................................................................... 25 Variáveis Especiais ............................................................... 25 Vetores Especiais ................................................................. 27 Hashes Especiais .................................................................. 28 Variáveis de Ambiente ......................................................... 28 Escopo de variáveis .............................................................. 29 Variáveis Package e Lexical ................................................. 29 Operadores .................................................................................. 31 Operadores Aritméticos ....................................................... 31 Operadores Lógicos ............................................................. 31 Operadores de Atribuição .................................................... 31 Operadores de strings ........................................................... 32 Operadores de Comparação ................................................. 32 Incremento e Decremento automáticos ................................ 32 Outros operadores ................................................................ 32 Operadores de Teste em Arquivos ....................................... 33 Operadores e Precedência .................................................... 34 3
Sumário Estruturas de controle e Instruções ............................................. 35 Modificadores ...................................................................... 35 Execução condicional .......................................................... 35 Controle de Fluxo ................................................................ 36 Loops .................................................................................... 36 Rótulo ou Label ................................................................... 38 Sub-rotinas, Packages e Módulos ............................................... 39 Sub-rotina ............................................................................. 39 Package ................................................................................ 39 Módulo ................................................................................. 39 Declaração de Sub-rotinas ................................................... 39 Chamando uma Sub-rotina .................................................. 39 Programação Orientada a Objeto ................................................ 44 Expressões Regulares ................................................................. 46 Pesquisa, Substituição e Tradução ....................................... 50 Funções ....................................................................................... 52 Funções Aritméticas ............................................................. 52 Funções de conversão de números, caracteres e horário ..... 54 Conversão de Estruturas ...................................................... 57 Funções relacionadas a String .............................................. 58 Funções relacionadas a Array .............................................. 62 Funções relacionadas a Hashes ............................................ 65 Operações com Arquivos ..................................................... 66 Funções de Entrada e Saída (I/O) ........................................ 71 Formatos para impressão e relatórios .................................. 80 Rotinas para Manipulação de Diretórios ............................. 81 Funções para filehandles, arquivos, diretórios e processos. 83 Funções de socket de baixo nível (Rede) ............................. 88 System V IPC ....................................................................... 91 Funções Diversas ................................................................. 96 Informações do Sistema de Arquivos ....................................... 102 Módulos ................................................................................... 112 Módulos padrão ................................................................. 112 Módulos CPAN .................................................................. 112 Perl/CGI ............................................................................. 113 Perl/DBM ........................................................................... 115 Perl/DBI ............................................................................. 116 Perl/WAP (Aplicações WAP em Perl) ............................... 118 mod_perl e Apache ............................................................ 119 Sendmail e arquivos anexados ........................................... 119 Depuração e Compilação .......................................................... 120 O Depurador (Debugger) Perl ............................................ 120 perlcc - O compilador Perl ................................................. 121 Informações Adicionais ............................................................ 122 Livros Recomendados ........................................................ 122 Recursos na Internet ........................................................... 123 Notação utilizada neste Guia ............................................. 124 Comentários e Sugestões ................................................... 124 Sobre o autor ...................................................................... 124 Índice ........................................................................................ 125
4
Introdução
Introdução O que é Perl? Perl (Practical Extraction and Report Language) é uma linguagem de programação extremamente poderosa criada por Larry Wall em 1987. Com milhares de usuários no mundo inteiro, tornou-se a linguagem escolhida para desenvolvimento na Web, processamento de texto, serviços para Internet, administração de sistemas, acesso a diversos bancos de dados e muitas outras tarefas que requeiram soluções multiplataforma e de desenvolvimento rápido.
Por que programar em Perl? Perl é uma linguagem interpretada, rápida, completa, segura e fácil de aprender. Os programas - ou scripts, se desejar - em Perl são interpretados e compilados “on-thefly”; portanto, seu código pode ser executado em quase todas as plataformas hoje disponíveis sem a necessidade de qualquer modificação. Perl é de uso irrestrito e bastante difundida em ambientes comerciais e de negócios via Internet, pois milhares de empresas contam com a sua estabilidade. Perl é concisa e orientada a objetos, o que nos permite desenvolver programas com menos problemas de codificação e manutenção. Não podemos esquecer ainda que Perl é muito flexível, não nos forçando a manter um estilo único de programação, pois sempre haverá mais de uma forma para resolver um mesmo problema. Enfim, quando adquirimos uma certa intimidade com a linguagem, criar programas ou scripts em Perl passa a ser muito simples e agradável.
Objetivo do Guia A melhor forma de demonstrar o que faz uma determinada função ou instrução em Perl é através de pequenos exemplos. Portanto, o objetivo é, além de fornecer uma fonte de consulta rápida para os mais experientes, fornecer elementos básicos para que o iniciante realmente consiga executar desde a instalação do software, tomar conhecimento da documentação on-line, até progressivamente descobrir as diversas aplicações e finalidades da linguagem de programação Perl. É de fundamental importância observar que Perl muitas vezes apresenta características extremamente sutis e uma delas diz respeito ao próprio nome: “Perl” e “perl”. A palavra “Perl” refere-se à linguagem de programação propriamente dita e “perl” é apenas o nome do executável instalado no sistema operacional. 5
Download e Instalação
Download e Instalação Como obter e instalar Perl Perl é um software Open Source e o download de seu código fonte ou de sua distribuição pré-compilada pode ser feito em: http://www.perl.com/pub/language/info/software.html Veja abaixo a instalação padrão (Versão 5.6.0) no Unix/ Linux e no Windows: Instalação no Unix / Linux mkdir /usr/src/temp
# esta primeira e segunda linhas são apenas
cd /usr/src/temp # sugestões para a instalação # copie neste diretório o arquivo stable.tar.gzip; gzip -d stable.tar.gzip tar xvf stable.tar cd perl-5.6.0 rm -f config.sh Policy.sh sh Configure -de make make test make install
Instalação no Windows
Para o Windows há duas opções: utilizar a versão fornecida no endereço acima, no link específico para Win32 (fazer o download e, após descompactar, ler o arquivo README.win32 para realizar a instalação) ou fazer o download da versão ActivePerl em http:// www.activestate.com/Products/ActivePerl/. Há também versões ActivePerl para Linux e Solaris.
Verificando a presença do Perl no sistema operacional No Unix/Linux, uma forma rápida de verificar se Perl já está presente no sistema é usando o comando wich: $ which perl
No Windows é preciso verificar o PATH atual, o diretório c:\Perl onde é instalado por default, ou executar na linha de comandos o comando ‘perl’.
Verificando a versão do Interpretador Perl Para verificarmos a versão e em qual sistema operacional está instalado, utilizamos a seguinte instrução na linha de comandos: $ perl -v
6
Iniciando
Iniciando Executando uma instrução em Perl Podemos executar uma instrução Perl diretamente na linha de comandos da seguinte forma: # Unix/Linux $ perl -e ‘print “Bem Vindo a Perl\n” ‘; % perl print “Bem Vindo a Perl\n”; ^D # Win32 C:\perl -e “print \”Bem Vindo a Perl \n \” “ C:\perl print “Bem Vindo a Perl \n”; CRTL-Z
O Interpretador Perl Perl geralmente é instalado no diretório /usr/bin ou /usr/ local/bin (Unix/Linux), portanto a primeira linha de um programa geralmente começa com: #!/usr/bin/perl, indicando ao servidor o que fazer com o respectivo arquivo de programa quando este é executado, ou seja, no caso de executar o programa através do Interpretador Perl, essa linha deve informar a localização exata do compilador. No Windows, a instalação default do Perl (ActivePerl) é feita no diretório C:\Perl.
Executando um programa a partir de um arquivo .pl Execução no Linux/Unix
Utilizando um editor de texto, digitar as seguintes linhas: #!/usr/bin/perl # Primeiro programa de teste print (“Bem Vindo a Perl! \n”);
Salvar o arquivo com o nome bvindo.pl. Para executá-lo diretamente da linha de comandos, devemos alterar os atributos do arquivo, tornando-o executável: $ chmod +x bvindo.pl
# utilizando o atributo +x
$ chmod 755 bvindo.pl # 755 corresponde a -rwxr-xr-x
Podemos então executá-lo utilizando uma das formas abaixo: $ ./bvindo.pl $ perl bvindo.pl $ bvindo.pl
# funcionará somente se o diretório onde estiver o arquivo fizer parte do pathname
7
Iniciando Execução no Windows
Utilizando um editor de texto, digitar as seguintes linhas: #!c:/Perl/perl.exe # Primeiro programa de teste print (“Bem Vindo a Perl! \n”);
Salvar o arquivo com o nome bvindo.pl e executá-lo no prompt: C:\perl bvindo.pl
Comentários em Perl Comentários em Perl são precedidos por #. #!/usr/bin/perl
# esta linha não é um comentário; indica onde está o interpretador Perl.
# indica que esta linha é um comentário.
Comentários em múltiplas linhas podem ser inseridos através da diretiva POD (Plain Old Documentation) =cut. Exemplo print “codificação normal do programa...\n”; =cut Comentários na primeira linha. Comentários na segunda linha. etc. =cut print “continuação do programa após os comentários.\n”;
Y2K e Perl Perl não tem problemas com o ano 2000. Veja o exemplo abaixo: Exemplo $ano = (localtime) [5]; print “Ano é “, 1900 + $ano; $ano = (localtime) [5]; print “19$ano está INCORRETO.\n”; print 1900+$ano, “ está CORRETO!\n”;
8
Documentos on-line do Perl
Documentos on-line do Perl A documentação do Perl é extensa (cerca de 70.000 linhas) e estará disponível na linha de comandos após a instalação completa do software. O conteúdo da documentação pode ser visualizado através do utilitário perldoc, que tem a função de facilitar a consulta. perldoc
Faz uma busca em suas diversas páginas de manuais instaladas. perldoc seção perldoc seção | col –b > seção.txt perldoc -f função_Perl perldoc -q palavras_chave_FAQ Argumento
Descrição
seção seção | col –b > seção.txt
Mostra a documentação de uma seção. Converte o documento e cria um arquivo seção.txt. Nome da função Perl a ser consultada. Mostra a documentação relacionada a uma determinada função. Pesquisa no FAQ pela palavra-chave fornecida.
função_Perl
palavras_chave_FAQ
Para facilitar o acesso, o manual do Perl foi dividido em seções: Seção
Descrição
perl perldelta perl5004delta perlfaq perltoc perldata perlsyn perlop perlre perlrun perlfunc perlopentut perlvar perlsub perlmod perlmodlib perlmodinstall perlform perllocale perlref perlreftut
Visão geral do Perl. Alterações desde a versão anterior. Alterações na versão 5.004. Perguntas feitas com freqüência (FAQ). Tabela de conteúdo da documentação. Estruturas de dados. Sintaxe do Perl. Operadores e precedência. Expressões regulares. Execução e opções. Funções embutidas. Tutorial (aberto) sobre vários assuntos. Variáveis predefinidas. Sub-rotinas. Módulos Perl: como funcionam. Módulos Perl: como escrever e usar. Módulos Perl: como instalar a partir do CPAN. Formatos: relatórios e gráficos no modo texto. Suporte local a idiomas específicos. Referências em Perl. Rápida introdução a referências.
9
Documentos on-line do Perl Seção
Descrição (continuação)
perldsc perllol perltoot perlobj perltie perlbot perlipc perlthrtut perldebug perldiag perlsec perltrap perlport perlstyle perlpod perlbook
Introdução às estruturas de dados. Estruturas de dados: listas de listas. Tutorial de Orientação a Objeto em Perl. Objetos em Perl. Objetos ocultos em variáveis simples. Truques em Orientação a Objeto e exemplos. Comunicação entre processos (IPC System V). Tutorial sobre threads (partes de um processo). Depurador. Mensagens de diagnósticos. Segurança em Perl. Armadilhas para os descuidados. Guia de portabilidade. Guia de estilo. Documentação comum mais antiga. Informações do Livro Perlbook:The Camel Book de Larry Wall et al. Formas de incorporação de Perl em aplicações C ou C++. Interface de abstração de Entrada/Saída interna (I/ O). Interface de programação de aplicação XS. Tutorial XS (interface de extensão entre Perl e alguma biblioteca C que se deseje usar com Perl). Funções internas para aqueles que criam extensões. Convenções de chamadas do C. Registros do histórico do Perl.
perlembed perlapio perlxs perlxstut perlguts perlcall perlhist
10
Chamada do Interpretador Perl
Chamada do Interpretador Perl O executável perl geralmente é instalado no diretório /usr/ bin or /usr/local/bin no Unix e no diretório Perl no Windows onde também é chamado de interpretador perl. Todo programa Perl deve ser submetido ao interpretador para que seja executado. A primeira linha em muitos programas ou scripts perl geralmente começa da seguinte forma: #!/usr/bin/perl (Unix/Linux). No Windows pode ser feita a associação a uma extensão (por exemplo, .pl) para esse tipo de arquivo (.pl, .cgi, .plx) e o executável perl. O interpretador perl compila o programa internamente e o executa logo em seguida. Perl é conhecida como uma linguagem interpretada, mas muitas vezes é chamada de linguagem interpretada e compilada devido a este processo de execução dos programas. perl [ -sTuU ] [ -hv ] [ -V[:arqconf] ] [ -cw ] [ -d[:debugger] ] [ -D[númerolista] ] [ -pna ] [ -Fpadrão ] [ -l[octal] ] [ -0[octal] ] [ -Idir ] [ -m[-] módulo] [ -M[-]’módulo...’ ] [ -P ] [ -S ] [ -x[dir] ] [ -i[extensão] ] [ -e ‘comando’ ] [ — ] [ programa ] [ argumentos]... Opção
Significado
-a
Ativa o modo de autodivisão (autosplit) quando usado com -n ou -p. Separações (splits escalares $_) são armazenadas em @F. -c Verifica a sintaxe mas não executa o programa; executa blocos BEGIN e END. -C Habilita caracteres nativos no sistema de interfaces. -d [:debugger] Executa o programa sob o controle do depurador de erros. (Use -de 0 para começar o depurador sem carregar um programa.) A opção debbugger é um depurador alternativo, geralmente o DProf. -D [número/lista] Preparaasflagsdodepuradordeerros.Perldevetersido previamentecompiladocom-DDEBUGGING parausar a diretiva -D; (o argumento é um bit mask ou letra). -e ‘comando’ Executa uma simples linha de programa ou função Perl. Múltiplos comandos -e podem ser fornecidos para construir um programa com múltiplas linhas. Omite o nome do programa. -F /padrão/ Especifica uma expressão regular a ser dividida (separada) se -a estiver ativo (// são opcionais). -h Mostra a descrição resumida dos parâmetros possíveis. -i [extensão] Arquivos processados pela construção < > são editados no lugar do original. Fará cópia de segurança se a extensão for fornecida. -I diretório Associado à -P, informa ao pré-processador C onde procurar por arquivos de inclusão (include). O diretório é acrescentadoaocomeçode@INCquecontémocaminho de pesquisa para os módulos. Vários -l são permitidos. 11
Chamada do Interpretador Perl -l [octal] -[mM][-]módulo
-n
-p -P -s
-S -T -u
-U -v
-V[: arqconf]
-w
-W -x[diretório]
-X -0 [octal]
—
Habilita o processamento automático de fim de linha; isto é, -l013. Especifica o terminador de linha. Executa ‘use/no module...’ antes de executar o programa (módulo é o módulo a ser executado ou não). Assume um loop de entrada na execução de um script. Linhas não são impressas; ‘while (<>) { ... }’ loop ao redor do programa. Assume um loop de entrada na execução do script. Linhas são impressas. Executa o pré-processador C no script antes da compilação por Perl. Interpreta -xxx na linha de comando como uma chave e prepara a variável correspondente $xxx no script; habilita uma análise rudimentar para chaves depois do arquivo de programa. Utiliza a variável de ambiente PATH para procurar um script. Força a checagem de corrompimentos ou danos. Gera um dump de memória após a compilação (análise) do script para ser usado com o programa undump(1) (onde estiver disponível). Permite que perl execute operações inseguras. Retorna a versão do Interpretador Perl; o sistema operacional no qual está instalado e outras informações a respeito do Perl instalado no sistema. Imprime um sumário da configuração atual do Perl no sistema operacional (a variável arqconf geralmente é o arquivo de configuração Config.pm). Imprime advertências sobre possíveis erros de codificaçãoeoutroserrosrelacionadosàconstrução do script. De uso recomendado na chamada do script. Habilita todas as advertências. ExtraiprogramaPerldoreceptordeentrada(stdin);extrai textoantesdalinhaperl#!.Seodiretórioforespecificado, mudaráparaessediretórioantesdeexecutaroprograma. Desabilita todas as advertências. Especifica o separador de registros ($/) como um número octal (que não seja o número zero). Se octal não for fornecido, o caractere nulo será o separador . Veja também -l (\0, se nenhum argumento for fornecido). Termina o processamento da opção (argumento), mesmo que a próxima opção comece com um sinal de menos. Não tem outro efeito além deste.
Exemplo
12
perl -e ‘print “Programa Perl “‘
# execução no Unix na linha de comandos.
perl -e “print \” Programa Perl \””
# execução no Windows na linha de comandos.
echo “print ‘ Programa Perl ‘“ | perl de um outro comando (pipe).
# execução na linha de comando através da saída
perl programa.pl
# execução de um programa diretamente na linha de comandos.
perl prog.cgi
# teste de execução de um cgi na linha de comandos.
Literais
Literais Numérico 123
# inteiro 123
-124 1_234
# inteiro negativo # inteiro 1234. Obs.: _ (sublinhado) utilizado apenas para facilitar a leitura do número
123.4
# real 123,4
.005
# 0,005
5E-3
# 0,005(notação científica)
23e6
# número 23.000.000
23_000_000
# número 23.000.000
23e-100
# um número muito pequeno (23 vezes 10 elevado a -100)
0xcc (hex)
# hexadecimal (valor decimal: 204)
0b01100100
# binário (versão 5.6 - valor decimal: 100)
0314 (octal)
# octal (valor decimal: 204)
String É importante notar a forma como as variáveis são usadas em strings. Variáveis contidas em strings possuem um termo técnico: “interpolação de variáveis”. Exemplos $numero=250; $string=”Perl”; print “Aspas: A string é $string e o número é $numero.\n”; Perl e o número é 250.
# imprime: Aspas: A string é
print ‘Apóstrofo: A string é $string e o número é $numero.\n’; string é $string e o número é $numero.\n
# imprime: Apóstrofo: A
“abcde”
Variáveis e caracteres de controle serão interpolados quando estiverem entre aspas “...”. qq/.../ pode ser usado no lugar de “...”. /.../ pode ser substituído por qualquer outro caractere delimitador. ‘abcde’
Variáveis e caracteres de controle não são interpretados quando ‘...’ são utilizados. q/.../ pode ser usado no lugar de “...”. /.../ pode ser substituído por qualquer outro caractere delimitador. ‘comando ‘
Avalia a saída da expressão do comando especificado. Também pode ser usado: qx/comando/.
13
Literais
Aspas, Interpolação e Perl Costumeiro
Genérico
Significado e Interpolação
‘’ “”
q{} q// qq{} qq//
“
qx{} qx//
() //
qw{} qw// m{} m//
Literal; não há. Literal; há para barra invertida e variáveis. Comando; há para barra invertida e variáveis. Lista de Palavras; não há. Coincidência de padrão; há para barra invertida e variáveis. Padrão;háparabarrainvertidaevariáveis. Substituição; há para barra invertida e variáveis. Transcrição/Conversão; apenas barra invertida.
qr{} qr// s{}{} s/// tr///
tr{}{} y///
Caracteres de Controle e Interpolação Caracter
Descrição
\a \b \c[ \e \f \n \r \t \l e \u \L e \U
Alarme (sinal sonoro). Tecla de retrocesso (Backspace). CTRL-C (Control-C). ESC ( Escape). Avanço de formulário (Formfeed). Nova linha (Newline). Retorno automático (Return). Tabulação horizontal (Tab). Aplica minúsculo/maiúsculo no caractere seguinte. Aplica minúsculo/maiúsculo até que um \E seja encontrado. Colocabarrainvertidaemtodososcaracteresseguintes que não forem alfanuméricos. Termina \U, \L ou \Q. Caractere nomeado. Deve ser ativado por: use charnames [conjunto]. Documentação: perldoc charnames. ESC em octal. DEL em hexadecimal. Barra invertida. Aspas dupla.
\Q \E \N{nome} \033 \x7f \\ \”
Vetores Uma variável vetor (array) é capaz de armazenar uma série de valores, com cada valor identificado unicamente por um inteiro: o seu índice. O conteúdo completo do vetor pode ser acessado pelo seu nome precedido do sinal @. Exemplos: ()
# vetor vazio
(1,2,3,4) ou (1..4)
# vetor com quatro elementos
($a, $b, @c) = (1,2,3,4) # $a é igual a 1, $b é igual a 2 e @c é igual a 3 4
14
(‘a’..’z’)
# caracteres de a até z
qw/jan fev mar/
# equivale a (‘jan’,’fev’,’mar’)
Literais
Referência em Vetor Os valores individuais armazenados em vetores podem ser acessados pelo nome do vetor, precedido pelo sinal $ e seguido de um número entre colchetes. Exemplos: [0,1,2,3]
# utilizar o índice para se referir a um elemento do vetor. Por default o primeiro índice é 0.
@v=(5,7,9,11);
# $v[2] é igual a 9
Hash (Vetor Associativo) Um hash é melhor entendido como sendo uma tabela de duas colunas, onde a coluna da esquerda armazena as chaves e a coluna da direita armazena os valores escalares associados àquelas chaves. É chamado de hash devido ao algoritmo (hashing) que é utilizado para mapear cada chave a um índice interno na tabela. (chave1, valor1, chave2, valor2,...) (chave1=> valor1, chave2=> valor2,...)
Referência em Hash Os valores individuais armazenados em hashes (chamados de entradas) são acessados da mesma forma que os elementos individuais de um array; a única diferença é que em vez de um índice específico entre colchetes, é especificada uma chave entre {}. {chave1, valor1, chave2, valor2,...} Exemplos: %hash=(‘1’=>’Um’,’2’=>’Dois’, ‘3’=>’Três’); $hash{‘2’} # é igual a Dois.
Declaração de Sub-rotinas Uma sub-rotina é um trecho de código que será utilizado mais de uma vez no mesmo script. Em Perl, uma subrotina é uma função definida pelo usuário. A sub-rotina é definida começando com sub e o nome da sub-rotina. Em seguida vem a área entre duas chaves que é chamada de bloco de instruções. sub {bloco_de_instruções}
15