terça-feira, 26 de fevereiro de 2008

Problema do gets com uso de parametros na linha de comando em ruby

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