![]() |
|
Модераторы: ginnie |
![]()
|
|
| treee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 6.12.2010 Репутация: нет Всего: нет |
Вот программа:
Вот лог: Dec 19 04:44:40 proxy postfix/smtpd[23076]: NOQUEUE: reject: RCPT from unknown[11.11.11.7]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in virtual mailbox table; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<chello.se> Dec 21 08:22:46 proxy postfix/smtpd[11968]: 3C8FB184002: client=unknown[10.10.10.10], sasl_method=PLAIN, sasl_username=test Dec 21 08:22:46 proxy postfix/cleanup[11691]: 3C8FB184002: message-id=<[email protected]> Dec 21 08:22:46 proxy postfix/qmgr[32521]: 3C8FB184002: from=<[email protected]>, size=1227, nrcpt=1 (queue active) Dec 21 08:22:46 proxy postfix/smtpd[11968]: disconnect from unknown[10.10.10.10] Dec 21 08:22:46 proxy postfix/smtp[11811]: 3C8FB184002: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10026, delay=0.13, delays=0.01/0/0.01/0.11, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=07654-17, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 5504318400F) Dec 21 08:22:46 proxy postfix/qmgr[32521]: 3C8FB184002: removed Собственно сам вопрос, если if ($all=~ m /.*reject.*/) то print "$all\n"; выводит: поле из лога reject: RCPT from..........., мне надо чтобы эта строка не выводилась, а выводились все остальные. Пробовал делать if ($all ne ~ m /.*reject.*/) , с такой настройкой он выводит все поля $all. Где я не прав, спасибо. Это сообщение отредактировал(а) treee - 23.12.2010, 08:21 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
так? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 1 Всего: 49 |
alezzz, лучше, наверное $all !~ m/reject/.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| treee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 6.12.2010 Репутация: нет Всего: нет |
alezzz,
ginnie, Спасибо огромное.... Еще вопросец, я чуточку усложнил программу и на выходе почему-то двоится и лишнее сиплется, что то туплю.......
Выход: FROM=, TO=, SIZE=, CLIENT=10.10.10.10 FROM=, TO=, SIZE=, CLIENT=10.10.10.10 [email protected], TO=, SIZE=1227, CLIENT=10.10.10.10 [email protected], TO=, SIZE=1227, CLIENT=10.10.10.10 [email protected], [email protected], SIZE=1227, CLIENT=10.10.10.10 [email protected], [email protected], SIZE=1227, CLIENT=10.10.10.10 А хотелось бы получить только: [email protected], [email protected], SIZE=1227, CLIENT=10.10.10.10 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
treee
$id не получает значения, т.к. в $1 пусто после проверок в if() двумя строчками выше и после этого в хеше всего 1 ключ и тот пустой, а саму проверку мне кажется можно упростить до m /(from|to|client)=/i. Попробуйте еще на разных этапах поставить print с разными переменными, отладить программу. ginnie, а чем именно лучше? Оба выражения по смыслу одинаковы. В вашем варианте не будет проверки на совпадение .* после нахождения reject и сама проверка продет быстрее? |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 1 Всего: 49 |
alezzz, да, проверка пройдет быстрее. Попробуйте добавить в код use re 'debug'; для наглядности.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
ginnie, спасибо, почитаю, попробую.
|
|||
|
||||
| treee |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 6.12.2010 Репутация: нет Всего: нет |
alezzz,
Спасибо большое за помощь, нашёл косяк, не там my $id = $1; влепил, его надо чуть повыше поставить и тогда всё ОК. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |