Книга: Программирование на языке Ruby
10.1.26. Чтение исходного текста программы
10.1.26. Чтение исходного текста программы
Если вы хотите получить доступ к исходному тексту собственной программы, то можете воспользоваться уже описанным выше трюком (см. раздел 10.1.25).
Глобальная константа DATA
— это объект класса IO
, ссылающийся на данные, которые расположены после директивы __END__
. Но если выполнить метод rewind
, то указатель файла будет переустановлен на начало текста программы.
Следующая программа выводит собственный текст, снабжая его номерами строк. Это не очень полезно, но, быть может, вы найдете и другие применения такой техники.
DATA.rewind
num = 1
DATA.each_line do |line|
puts "#{'%03d' % num} #{line}"
num += 1
end
__END__
Отметим, что наличие директивы __END__
обязательно — без нее к константе DATA
вообще нельзя обратиться.
- 10.1.1. Открытие и закрытие файлов
- 10.1.2. Обновление файла
- 10.1.3. Дописывание в конец файла
- 10.1.4. Прямой доступ к файлу
- 10.1.5. Работа с двоичными файлами
- 10.1.6. Блокировка файлов
- 10.1.7. Простой ввод/вывод
- 10.1.8. Буферизованный и небуферизованный ввод/вывод
- 10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу
- 10.1.10. Получение и установка временных штампов
- 10.1.11. Проверка существования и получение размера файла
- 10.1.12. Опрос специальных свойств файла
- 10.1.13. Каналы
- 10.1.14. Специальные операции ввода/вывода
- 10.1.15. Неблокирующий ввод/вывод
- 10.1.16. Применение метода readpartial
- 10.1.17. Манипулирование путевыми именами
- 10.1.18. Класс Pathname
- 10.1.19. Манипулирование файлами на уровне команд
- 10.1.20. Ввод символов с клавиатуры
- 10.1.21. Чтение всего файла в память
- 10.1.22. Построчное чтение из файла
- 10.1.23. Побайтное чтение из файла
- 10.1.24. Работа со строкой как с файлом
- 10.1.25. Чтение данных, встроенных в текст программы
- 10.1.26. Чтение исходного текста программы
- 10.1.27. Работа с временными файлами
- 10.1.28. Получение и изменение текущего каталога
- 10.1.29. Изменение текущего корня
- 10.1.30. Обход каталога
- 10.1.31. Получение содержимого каталога
- 10.1.32. Создание цепочки каталогов
- 10.1.33. Рекурсивное удаление каталога
- 10.1.34. Поиск файлов и каталогов
- 5.3. Чтение каталогов
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Набор текста
- 1.2.5. Пример программы
- Стиль написания исходного кода
- 24.7. Использование программы-твикера
- 4.4.3. Чтение и запись
- 13.3.4. Поиск и замена текста
- 7.6. Оценка эффективности рекламного текста
- Особенности оформления текста книги
- 1.3. Задачи рекламного текста