STDIN 这一组以大写字母开头,是常量
$stdin 这一组以$开头,是全局变量
常量不可变,STDOUT 总指向屏幕显示(除非运行 ruby 时在命令行设置>out 2>err 之类)
变量可变,所以$stdin 可以替换成别的 IO/File 对象
全局的输出方法,如 print puts 等,总是向$stdout 输出,而非向 STDOUT 输出,如:
print 1 # 最开始时$stdout和STDOUT是一致的,输出到屏幕
$stdout = open('output_file','w') # $stdout指向另一个File对象
print 2 # 这时输出到output_file了
$stdout = STDOUT # $stdout和STDOUT又指向同一个对象了
print 3 # 又输出到屏幕了
STDOUT 和$stdout 有两套,并不重复,是对 Perl 的一种改进