Jump to content

Recommended Posts

Добрый день. Есть текстовый файл, из него надо выдернуть информацию разного рода. Есть переменная $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', все равно при проверке попадаем в первый блок. Как это исправить?

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...