Recebendo Dados do Usuário: < STDIN > e chomp

Neste tutorial de nosso curso de Perl, vamos aprender como receber dados do teclado do usuário através do operador <STDIN> e da função chomp.
Baixar apostila de Perl em PDF
Baixar e estudar pela apostila em PDF

Interatividade em Perl

Até o momento, nossos scripts funcionaram sempre de uma determinada maneira, sempre repetindo o mesmo, e sempre resultando nas mesmas coisas (imprimindo informações na tela).

Mas será que é isso que acontece na maioria dos programas que usamos?
Vamos pensar um pouco.

Se você clica numa música, seu player toca nela.
Se clica em outra, é outra que vai rodar.

Se você entra em sua rede social, algumas informações aparecem.
Se outra pessoa fizer o login, coisas diferentes vão aparecer.

Se digitar uma determinada URL, vai pra um site.
Se digitar outra, vai pra outro site.

Ou seja, os programas, scripts e sistemas reagem de maneira diferente dependendo das informações que recebem do usuário. Há uma interatividade, a máquina faz determinada coisa se você fizer determinada ação.

Recebendo Informações do Usuário em Perl: <STDIN>

Vamos fazer com que a pessoa que vai usar nossos scripts em Perl forneçam dados, informações ao programa.

Inicialmente, vamos pegar essas informações do teclado do usuário (outras maneiras podem ser usadas, como pegar dados de um formulário da internet, de um arquivo de sua máquina, de um determinado local da tela que a pessoa clicou, etc etc).

Vamos fazer isso através do operador <STDIN>.
Para armazenamos uma entrada do teclado e armazenarmos na variável $minha_variavel, fazemos:
  • $minha_variavel = <STDIN> ;

Rode o script pelo terminal de comando.

Note que primeiro ele exibe o primeiro print do script, depois não acontece nada no programa.
Isso ocorre porque o Perl chegou no <STDIN> (standard input, ou entrada padrão) e ele fica esperando o usuário digitar algo e apertar o ENTER.

Digite "Curso Perl Progressivo".
Em seguida, ele printa na tela a variável, que armazena o que você digitou, veja o resultado:

A função chomp do Perl

Vamos criar um script que pede ao usuário um dado, um número, por exemplo, e em seguida printa ele na tela:
#!/usr/bin/perl

print "Digite um numero: ";
$num = <STDIN>;
print "Você digitou: $num";
Note uma coisa curiosa, após imprimir o número na tela, há uma quebra de linha:
Curso de Perl online grátis

Mas não tem o caractere \n no script, isso ocorreu por quê?

O que acontece após digitarmos o número?
Demos enter.

Então, na variável $num não tem apenas "2112" armazenado.
Na verdade, tem "2112\n", com a quebra de linha, pois você deu enter.

Porém, nem sempre queremos esse troço ao final. Se formos trabalhar com números, por exemplo, queremos apenas o 2112 e nada de \n, concorda?

Então, aí que entra a função chomp().
Basta colocar a variável dentro dos parêntesis e essa função vai tirar o \n.

Veja como fica o código usando a função chomp():
#!/usr/bin/perl

print "Digite um numero: ";
$num = <STDIN>;
chomp($num);
print "Você digitou: $num";

E o resultado:
Como usar <STDIN> em Perl

Agora sim, temos só o número armazenado na variável $num!
Podemos até dar uma enxugada ainda maior em nosso código:
#!/usr/bin/perl

print "Digite um numero: ";
chomp($num = <STDIN>);
print "Você digitou: $num";
Foda, esse Perl, não é?

Exercício

Baixe e instale o Visual Studio Code.
Crie um arquivo "perlprogressivo.pl", coloque os scripts desse tutorial, vá em "Terminal -> Run Active File", conseguiu rodar?

Nenhum comentário:

Veja também: