试图在命令行中多行输入读取数据时,我下面的建议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