Escrevendo na tela
Pois é, mais um post da série “Como programar em perl” que provavelmente se tornará semanal, com toda quarta-feira um post novinho pra vocês. Tentarei ser regular como os encontros sociais da rio.pm, que já a alguns anos ocorrem toda segunda quinta-feira do mês. Mas voltando ao mini-tutorial… Hoje falaremos de como imprimir coisas na tela usando perl.
Uma das formas mais fáceis de imprimir algo na tela é usando o comando print, vejamos o exemplo mais clássico do uso desse comando:
print "Olá Mundo";
E o que será que esse troço aí faz?! Não parece meio óbvio? Isso imprime Olá Mundo.
Não é que esse negócio é fácil mesmo?!!
Pois é, não existe coisa mais simples, se você quer que ele imprima Olá Mundo, você só precisa mandar: imprima Olá Mundo.
Tá, tudo bem… Isso eu entendi… Mas porque as aspas (“)?
Bem, isso diz ao perl que o Olá Mundo é uma string, um texto. Se eu não botasse as aspas, o perl acharia que Olá e Mundo são comandos (funções). Mas como não exitem essas funções, esse código daria erro.
O print não aceita só strings… ele aceita uma lista de “coisas”:
print "Olá", " ", "números: ", 1, 2, 3, 4;
O que isso faz?! Isso imprime: a string Olá, em seguida espaço, depois a string números: (com espaço no final), e então, 1, 2, 3, 4. Como fica isso impresso? Assim:
Olá numeros: 1234
Ele imprime cada um dos itens da lista sem separadores. Vamos ver outro exemplo?
print "Números de 1 a 10: ", 1 ... 10;
Isso imprime:
Números de 1 a 10: 12345678910
Mais um exemplo:
$numero = 15; print "Meu número é igual a ", $numero;
Que imprime:
Meu número é igual a 15
E isso imprime a mesma coisa:
$numero = 15; print "Meu número é igual a $numero";
Certo? Então acabamos de ver que se eu botar uma variável escalar entre as aspas, o print vai imprimir o valor dessa variável. Interessante… Mas e se eu não quiser imprimir o valor?! Se, por exemplo eu quiser imprimir: Eu tenho uma variável chamada $numero ?
Uma forma de fazer isso seria ao invés de usar as aspas duplas (“) usar aspas simples (‘):
É importante notar, que estamos falando das aspas verticais (conforme aparece nos trechos de código) e não das aspas francesas (que aparecem no restante do texto). Essa diferença se deve ao fato do html do blog dar uma “ajeitada” ao seu modo, mesmo utilizando os códigos de entidade.
print 'Eu tenho uma variável chamada $numero'
Hum… Então quer dizer que quando se usa aspas simples (‘) ele não interpreta o valor da variável, mas sim exatamente o que está escrito. Beleza! Mas e se eu quiser imprimir isso?
O valor da variável $numero é 15
Bom então talvez fosse melhor fazer assim:
print "O valor da variável \$numero é $numero";
De onde veio essa barra invertida (\)?!?! O que isso significa?
Bem… A barra invertida (contra-barra ou backslash, para os íntimos) tem uma função muito especial: Ela torna especial as coisas que não são especiais, e torna não-especial as coisas especiais.
???
Calma! Eu explico!
O caracter “$” é um caracter especial dentro das aspas duplas, ele diz que o que está por vir é uma variável escalar (como já vimos no post passado) então se usarmos a barra invertida (\) antes desse caracter, ele perde toda a especialidade dele, e passa a ser um caracter simples, passa a significar simplesmente “$“. Outro exemplo é o caracter “ (aspas duplas) que depois de outra aspa dupla significa o fechamento da primeira. Bom, um exemplo vale mais que mil palavras:
print "O valor da variável \$numero é \"$numero\"";
Complexo? Vamos ver:
Estamos mandando imprimir uma string (sabemos que é uma string pois está entre aspas).
Abrimos aspas, e escrevemos:
O valor da variável
Em seguida usamos uma contra-barra (\) e um $, o contra-barra tirou a especialidade do $, logo aquilo não é uma variavel.
Logo escrevemos é seguido de contra-barra (\) e aspa dupla (“), como a aspa deixou de ser especial (por causa da contra-barra) ela não está fechando a primeira aspa… é apenas mais um caracter a ser impresso.
Depois disso vem a variável $numero e outra aspa sem especialidade e a aspa especial, que fecha a primeira.
Até que não é tão complicado, concorda?
Mas e o caso contrário, o dos caracteres não-especiais precedidos por contra-barra(\)? Vamos ver alguns exemplos:
O caracter “t” não tem nada de especial, é apenas um t… Agora, quando botando uma contra-barra na frente, ele muda completamente de significado. “\t” significa tab, tabulação horizontal. Interessante, né?
Outro exemplo interessante é o “n“. Se você está executando esses prints no seu computador, você está percebendo que nenhum deles mudou de linha. Pois é, até agora não imprimimos nenhum caracter de quebra de linha. Esse caracter é o “\n“. Então podemos escrever:
print "\tO valor da variável \$numero é \"$numero\"\n";
O que vai imprimir:
tab O valor da variável $numero é “15″ quebra_de_linha
Certo… Acho que já está bom para essa quarta feira… Eu tenho que ir dormir, pois amanhã vou ficar acordado até tarde… Amanhã é o Encontro Social do rio.pm.
Lembre-se, caso queira algo mais avançado, caso queira ver alguns dos meus projetos ou queira brincar de golf, visite o perl-e e divirta-se. Espero vocês lá, e para a próxima 4a feira com mais um post sobre iniciação em perl!
Comments
-
http://br-linux.org/2009/mini-tutorial-de-perl-capitulo-2/ Mini Tutorial de Perl, capítulo 2
-
Angellos Van Dahl
-
Angellos Van Dahl

