Поиск

Упражнение: очистка входных данных

Подстановка данных вслепую, без проверки правильности выполнения команды (как в примере из предыдущего раздела), — обычная практика при обработке массивов данных. При этом программа считывает исходные данные с клавиатуры или файла и форматирует их в надлежащем виде для последующей обработки. В листинге 6.1 приведен простой пример программы демонстрации обработки данных, которая вычисляет массу тела на Луне по его Земной массе.

Наберите в текстовом редакторе программу из листинга 6.1 и сохраните ее под именем Moon. Сделайте файл программы выполняемым с помощью инструкций, приведенных на 1-м занятии, "Начало работы с Perl".

Пример выходных данных этой программы приведен в листинге 6.2.

Проведем анализ программы.

  • Строка 1. В этой строке находится путь к интерпретатору (измените его в соответствии с конфигурацией вашей системы) и ключ -w. Всегда включайте режим выдачи предупреждений!
  • Строки 3—4. Здесь пользователь вводит свой вес, и функция chomp удаляет символ новой строки из переменной $_ . Напоминаем, что если не указана другая переменная, то по умолчанию функция chomp использует $_.
  • Строка 5. Шаблон/^\s+/ находит символы пробелов в начале введенной строки. Поскольку строка замены отсутствует, то найденные пробелы просто удаляются.
  • Строка 7. Проверяется наличие во введенной строке допустимой единицы измерения.
  • Строки 8—9. Шаблон s/\s*(lbs?|фунт?) .*//i находит во входной строке слова lbs или фунт с возможными символами пробела перед ними (при этом учитывается падеж или множественное число). Например, слова фунт (как с пробелом впереди, так и без) или lbs будут удалены из входной строки. При этом значение переменной $_ умножается на 0.4536 для перевода фунтов в килограммы.
  • Строка 11. В противном случае из переменной $_ удаляются слова кг или килограмм, а также окружающие их пробелы.
  • Строка 14. Уже переведенная в килограммы масса тела, находящаяся в переменной $_, умножается на 1/6 и выводится на печать.