Перейти к содержимому
ThomasXIII

Perl, elif и регэкспы.

Рекомендуемые сообщения

Добрый день. Есть текстовый файл, из него надо выдернуть информацию разного рода. Есть переменная $state которая по заголовку определяет, что именно мы сейчас читаем. Далее из текущего состояния и соответствия регэкспу (между данными и заголовком есть ненужные строки) начинаем дергать данные. Есть 2 состояния: 'ts' и 'hs', данные соответствуют одному и тому же регэкспу (кривописанному, но пока стоит задача "чтобы работало хоть как-то"): /[A-Z_]+[\d\s]{7,}\d{0,3}\.\d{1,2}$/. Т.е. сперва имя заглавными буквами и подчерком, потом несколько столбцов цифр через пробельные символы затем число, отображающее проценты с одним или 2 знаками после запятой. Соответственно, есть кусок:

elsif ($state=="ts" and $str=~/[A-Z_]+[\d\s]{7,}\d{0,3}\.\d{1,2}$/)	{		#Делать дело	}elsif ($state=="hs" and $str=~/[A-Z_]+[\d\s]{7,}\d{0,3}\.\d{1,2}$/)	{		#Делать другое дело	}

В общем, структура данных одна, действия разные, в зависимости от заголовка. Беда в том, что вне зависимости от переменной $state при соответствии регэкспу все равно выполняется другой блок. Я даже вообще в коде исключил возможность переменной $state принимать значение 'hs', все равно при проверке попадаем в первый блок. Как это исправить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×