尝试从命令行读取多行输入时,我遵循了这个问题的建议:
# 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 这是 多行 很棒的输入字符串 FTW! 结尾 "这是\n\ta 多行\n 很棒的输入字符串\n \t\tFTW!!\t\nEND" "\n" “魔法”
(我输入到END
,其余的由程序输出,然后程序退出。)
在我改$/
回"\n"
. 所以我的问题很简单:为什么?
作为更大(但仍然很小)应用程序的一部分,我正在尝试设计一种记录笔记的方法;事实上,这种奇怪的行为可能具有破坏性,因为如果我无法重置行分隔符,我的程序的其余部分将无法正常运行。我已经尝试过使用双引号和单引号的各种方式,但这似乎不是问题。有任何想法吗?