2009-12-10 2 views
38

저는 루비를 처음 사용하고 있으며, 오늘 ARGV를 통해 인수를 전달할 수있는 응용 프로그램을 작성했습니다. 그러나 내 응용 프로그램 내에서, 나는 "gets"를 사용할 수 있기를 원합니다. 문제는 그럴 때마다 오류가 발생한다는 것입니다. 나는 이런 그에게 전화하세요Kernel #은 표준 입력 대신 파일을 읽으려고 시도합니다.

print "Say something! " 
input = gets 

:

script.rb:2:in `gets': No such file or directory - this (Errno::ENOENT) 
from script.rb:2 

희망의 사람 :

$ ruby script.rb this is arguments 

나는이 오류가 여기에

내 문제를 보여주는 간단한 스크립트입니다 이 문제를 해결하는 데 도움이 될 수 있으므로 루비 여행을 계속할 수 있습니다. :)

편집 : "Gets"는 파일에 전달 된 인수를 검색하지 않습니다. "가져 오기"는 사용자에게 입력을 쿼리합니다. 내 응용 프로그램 내에서 이러한 두 가지 방법을 모두 사용할 수 있기를 원합니다.

답변

80

인수가있는 경우 기본 gets 메서드는 첫 번째 파일을 파일로 처리하고 그 파일에서 읽으려고합니다. 이러한 상황에서 $stdin에서 읽으려면, 당신은 명시 적으로 사용해야합니다 : 당신은하지 Kernel#getsSTDIN.gets를 사용한다

print "Say something! " 
input = $stdin.gets 
+0

감사합니다. :) – Sirupsen

+5

stackoverflow; 나를 매일 더 잘 할 수있게 해줍니다. – lyonsinbeta

+0

감사합니다. Chuck. – welbornio

관련 문제