試圖在命令行中多行輸入讀取數據時,我下面的建議from this question時:怪異的行爲改變行分隔符,然後改變它回到
# change line separator
$/ = 'END'
answer = gets
pp answer
不過,我從STDIN#gets
時怪異的行爲我試圖改變$/
回:
# put it back to normal
$/ = "\n"
answer = gets
pp answer
pp 'magic'
時使用Ruby執行這將產生輸出這樣的:
$ ruby multiline_input_test.rb this is a multiline awesome input string FTW!! END "this is\n\ta multiline\n awesome input string\n \t\tFTW!!\t\nEND" "\n" "magic"
(I輸入到END
,其餘是由程序輸出,然後程序退出。)
它不會停下來從用戶獲取輸入更改$/
後回"\n"
。所以我的問題很簡單:爲什麼?
作爲一個更大(但仍然很小)的應用程序的一部分,我試圖設計一種記錄筆記的方式;就像這樣,這種奇怪的行爲可能具有破壞性,因爲如果我無法重置行分隔符,那麼我的程序的其餘部分將無法正常工作。我嘗試過所有使用雙引號和單引號的方式,但這似乎不是問題。有任何想法嗎?
您上次的代碼塊描述不清晰。哪部分是代碼,哪部分是用戶輸入,哪部分是響應? – sawa
@sawa對不起。我提供的代碼片段是我在'multiline_input_test.rb'內執行的所有代碼。當它被執行時,它暫停,等待用戶輸入。我輸入「這是一個多行真棒輸入字符串FTW !!」 (隨機空白),然後輸入'END'。剩下的就是打印出來的內容:執行第二個'從我的代碼中獲取'時沒有其他停頓。 – DesAdams
它看起來像第二個'gets'只是返回一個我從未輸入的換行符 – DesAdams