| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Как объединить два условия поиска в одно? |
| Автор: Suppir 27.8.2010, 14:31 | ||
Как объединить эти два условия в одно? Если строка начинается с "!ACT" и в строке НЕТ "-\d", то $act=0 А если строка начинается с "!ACT" и в строке есть "-\d", то $act=1; |
| Автор: dva300 27.8.2010, 15:39 | ||
| думаю что при отсутствии заведомо оговоренных допущений - никак. если же файл изначально "правильный" то можно применить следующий код
если же в файле есть "мусор" вида !PPP sjhfsjfhksljlk jl -3434 (т.е строки начинаются не только с !ACT) то нулевое значение не будет отражать реальное положение вещей - нужно предварительно готовить правильный файл. или оставить все как есть. Кстати, вот это условие if (/^!ACT/){$act=1; next} не говорит нам что в строке есть \d |
| Автор: Suppir 27.8.2010, 16:30 |
| попробую вот так: /^!ACT(?(?!-d)$act=0|$act=1)/; |
| Автор: dva300 27.8.2010, 17:13 |
| я думаю что чем проще тем лучше. не пройдет и пары м. и вы (или кто-то другой) будит читать данные конструкции очень долго + вспоминать логику. вообщем я категорично против такого рода оптимизации кода |
| Автор: Suppir 27.8.2010, 17:25 |
| после долгой возни и тестов я пришел к такому же выводу |
| Автор: Grost 31.8.2010, 14:28 | ||||
может я не совсем в тему, но всё же.. почему не воспользоваться стандартным if elsif?
|
| Автор: dva300 31.8.2010, 16:07 | ||
потому что вопрос изначально звучал по другому а воспользоваться безусловно можно. |