Brincando um pouco com ruby me deparei com um problema que parecia um pouco exotérico. Utilizando a função
gets num script que recebe parâmetros por linha de comando, o seguinte erro era exibido:
tiago@tiago-laptop:~/Projetos/testeRuby$ ruby Pessoa.rb Tiago
Pessoa.rb:14:in `gets': No such file or directory - Tiago (Errno::ENOENT)
Esse mesmo erro não ocorria quando não era enviado nenhum argumento na linha de comando. Pesquisando sobre o assunto no Google,
encontrei uma discussão que clareou minhas idéias. O Ruby herda o comportamento da função
gets do Perl, ou seja, se houver um parâmetro na linha de comando, essa função assume que este parâmetro é o path de um arquivo e portanto tenta abrí-lo.
Para resolver essa questão basta deixar claro que se deseja que a função gets recupere apenas o texto digitado. Na verdade ao invés de usarmos
gets puro devemos usar o do
STDIN da seguinte maneira
STDIN.gets.
Nenhum comentário:
Postar um comentário