Глобальные переменные так плохи, как Вы делаете их, не меньше
при создании полностью инкапсулированной программы можно использовать globals. Это - "грех" для использования globals, но программирующие грехи являются в основном философскими.
, Если Вы проверяете L.in.oleum, Вы будете видеть язык, переменные которого только глобальны. Это неприступно, потому что библиотеки у всех нет выбора, кроме как использовать globals.
Тем не менее, если Вы имеете выбор и можете проигнорировать философию программиста, globals, не все настолько плохо.
Ни один не Gotos, если Вы используете их правильный.
большая "плохая" проблема состоит в том, что, если Вы используете их неправильно, люди кричат, катастрофические отказы высаживающегося на берег Марса, и мировые аварийные завершения.... или что-то как этот.
Вот пример вывода файла в кодировке UTF-16LE:
open("data.txt", "w:UTF-16LE")
Ruby смотрит на кодировку строки, которую вы пишете, и при необходимости перекодирует. Вот очень подробное сообщение в блоге , описывающее механику с отличными примерами (см. Раздел «Внешние и внутренние кодировки по умолчанию»).
В этом блоге также есть куча полезной информации о кодировке символов с помощью Ruby, включая сообщение о кодировании с помощью Ruby 1.8 .