[PERL] расчленить почтовый адрес

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

[PERL] расчленить почтовый адрес

Непрочитанное сообщение Alex Keda » 2010-09-07 18:57:44

ковыряю perl совместно с exim
надо разобрать адрес который содержится в поле

Код: Выделить всё

mail to:
содержаться там может что-то типа

Код: Выделить всё

vasya@domain.su

Код: Выделить всё

"Василий Пупкин" <vasya@domain.su>
или любые комбинации перечисленного через запятую.
собсно - проблем особых нету, но вот думаю - не велосипед ли я изобретаю? может уже модуль какойнить есть?
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-07 19:04:36

велосипед, посмотри на cpan, Luke
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Alex Keda » 2010-09-07 19:34:33

http://cpansearch.perl.org/src/RJBS/Ema ... 892/README
нашёл. решило 90% моих проблем сразу
вот тока не могу понять как вычленить этой штукой адрес типа vasya@domain.su из той галиматьи что на входе
(щас уже обкоцал до одного адреса - мне нужен тока этот случай)

Код: Выделить всё

               # get destination address
                my @addresses = Email::Address->parse($dst_addrr);
                #my $addr_spec = $Email::Address::addr_spec;
                $num_mails = scalar @addresses;
                print LOGFILE "num adresses = " . $num_mails . "\n";
                # how many adresses?
                if ( $num_mails eq "1" )
                {
                        # get address
                        $dst_addrr = $addresses[0];
                        #my $host = $address->host;
                        #my $user = $address->user;
                        $dst_addrr =~ $Email::Address::addr_spec;
                        print LOGFILE "found address = " . $dst_addrr . "\n";
некатит. печатает в лог "Василий Пупкин" <vasya@domain.su>
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-07 20:05:45

Код: Выделить всё

$dst_addrr->address;
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Alex Keda » 2010-09-07 20:11:26

индейское жилищще
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-07 20:34:51

хз

Код: Выделить всё

#!/usr/bin/env perl

use Email::Address;
use strict;

my $dst_addr = 'Gans Otto <olo@fuck.com>';
my @address = Email::Address->parse($dst_addr);
print $address[0]->address, "\n";

Код: Выделить всё

>perl tst.pl
olo@fuck.com
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Гость
проходил мимо

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Гость » 2010-09-07 20:56:41

в двойные кавычки возьми своего ганса отто

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-07 21:04:37

ну взял и чо
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение thefree » 2010-09-07 23:09:17

а то, что там в двойных кавычках @
===
use Data::Dumper;
print Dumper(@addresses);
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-08 7:12:51

что сказать то хотел?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Tuchka
рядовой
Сообщения: 23
Зарегистрирован: 2008-09-19 7:54:52
Контактная информация:

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Tuchka » 2010-09-08 14:07:05

hizel писал(а):что сказать то хотел?
Наверно про интерполяцию переменных хотел сказать. Что массив у тебя будет подставляться. Хотя в чем проблема я пока из обсуждения тоже не уловила :)

Гость
проходил мимо

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Гость » 2010-09-08 14:15:47

судя по
hizel писал(а):$dst_addrr->address;
Alex Keda писал(а):индейское жилищще
hizel писал(а):хз
'Gans Otto <olo@fuck.com>';
логично предположить что разница только в кавычках
AlexKeda писал(а):некатит. печатает в лог "Василий Пупкин" <vasya@domain.su>
а работает у лиса или нет он уже не сказал
полагаю что не работает
а пример с кавычками хизель не продемонстрировал

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-08 14:26:16

пример с кавычками работает, демонстрировать его нет нужды
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Alex Keda » 2010-09-08 15:07:40

всем сорри, заработало
сказалось моё незнание синтаксиса perl

Код: Выделить всё

mx# vim /tmp/functions.pl
#!/usr/bin/perl -w

# подрубаем мусю /usr/ports/databases/p5-DBD-mysql50
use DBI;
use Email::Address;


# search and return rewritten email address
sub mysql_rewrite {
        my ($search_addr, $dst_addrr) = @_;
                print "$search_addr -> $dst_addrr\n";
                # get destination address
                my @addresses = Email::Address->parse($dst_addrr);
                #my $addr_spec = $Email::Address::addr_spec;
                $num_mails = scalar @addresses;
                print "num adresses = " . $num_mails . "\n";
                # how many adresses?
                if ( $num_mails eq "1" )
                {
                        # get address
                        $dst_addrr = $addresses[0];
                        #$dst_addrr =~ $Email::Address::angle_addr;
                        $dst_addrr = $dst_addrr->address;
                        print "found address = " . $dst_addrr . "\n";
                }

        return  $dst_addrr;

}       # end mysql_rewrite

#sub check

print mysql_rewrite ('petrov@isp.su','"А. Кеда" <akeda@isp.su>') . "\n";

Код: Выделить всё

mx# /tmp/functions.pl
petrov@isp.su -> "А. Кеда" <akeda@isp.su>
num adresses = 1
found address = akeda@isp.su
akeda@isp.su
mx#     
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-08 15:15:28

так не должно быть, по RFC там должон быть что то типа

Код: Выделить всё

=?windows-1251?B?wuvg5Ojs6PAg1A==?=
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение Alex Keda » 2010-09-08 15:30:17

это адрес внутри exim
он уже расчленил ваш rfc
Убей их всех! Бог потом рассортирует...

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: [PERL] расчленить почтовый адрес

Непрочитанное сообщение hizel » 2010-09-08 15:33:35

а, ну ок, чо :}
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.