ThomasXIII Posted March 25, 2014 Report Posted March 25, 2014 Добрый день. Есть текстовый файл, из него надо выдернуть информацию разного рода. Есть переменная $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', все равно при проверке попадаем в первый блок. Как это исправить? Quote
ThomasXIII Posted March 25, 2014 Author Report Posted March 25, 2014 Сам спросил, и сам нашел ответ. Заменил $state=="ts" на $state=~/ts/, и все заработало Firebird 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.