ทั้งสอง$stdoutและSTDOUTมีความหมายที่แตกต่างกัน เอกสารของ Rubyค่อนข้างชัดเจนในหัวข้อนี้:
$stdout - เอาต์พุตมาตรฐานปัจจุบัน
STDOUT- เอาต์พุตมาตรฐาน ค่าเริ่มต้นสำหรับ $ stdout
เมื่อคุณต้องการที่จะเขียนถึงมาตรฐานการส่งออกแล้วคุณจริงหมายถึงปัจจุบัน$stdoutออกมาตรฐานดังนั้นคุณควรจะเขียนถึง
STDOUTก็ไม่ไร้ประโยชน์เช่นกัน $stdoutมันเก็บค่าเริ่มต้นสำหรับ ถ้าคุณเคยโอนแล้วคุณสามารถเรียกคืนไปยังค่าก่อนหน้านี้ที่มี$stdout$stdout = STDOUT
นอกจากนี้ยังมีตัวแปรที่กำหนดไว้ล่วงหน้าอีกหนึ่งตัวแปร:
$>- เอาต์พุตเริ่มต้นสำหรับ print, printf ซึ่งเป็น$stdoutค่าเริ่มต้น
อย่างไรก็ตามดูเหมือนว่าใน Ruby 2.3 จะทำงานเป็นนามแฝงสำหรับ$stdout. การกำหนดใหม่$stdoutจะเปลี่ยนค่าของ$>และในทางกลับกัน