Страница 1 из 1
[PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 18:57:44
Alex Keda
ковыряю perl совместно с exim
надо разобрать адрес который содержится в поле
содержаться там может что-то типа
или любые комбинации перечисленного через запятую.
собсно - проблем особых нету, но вот думаю - не велосипед ли я изобретаю? может уже модуль какойнить есть?
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 19:04:36
hizel
велосипед, посмотри на cpan, Luke
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 19:34:33
Alex Keda
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>
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 20:05:45
hizel
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 20:11:26
Alex Keda
индейское жилищще
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 20:34:51
hizel
хз
Код: Выделить всё
#!/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";
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 20:56:41
Гость
в двойные кавычки возьми своего ганса отто
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 21:04:37
hizel
ну взял и чо
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-07 23:09:17
thefree
а то, что там в двойных кавычках @
===
use Data::Dumper;
print Dumper(@addresses);
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 7:12:51
hizel
что сказать то хотел?
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 14:07:05
Tuchka
hizel писал(а):что сказать то хотел?
Наверно про интерполяцию переменных хотел сказать. Что массив у тебя будет подставляться. Хотя в чем проблема я пока из обсуждения тоже не уловила

Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 14:15:47
Гость
судя по
hizel писал(а):$dst_addrr->address;
Alex Keda писал(а):индейское жилищще
логично предположить что разница только в кавычках
AlexKeda писал(а):некатит. печатает в лог "Василий Пупкин" <
vasya@domain.su>
а работает у лиса или нет он уже не сказал
полагаю что не работает
а пример с кавычками хизель не продемонстрировал
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 14:26:16
hizel
пример с кавычками работает, демонстрировать его нет нужды
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 15:07:40
Alex Keda
всем сорри, заработало
сказалось моё незнание синтаксиса 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#
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 15:15:28
hizel
так не должно быть, по RFC там должон быть что то типа
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 15:30:17
Alex Keda
это адрес внутри exim
он уже расчленил ваш rfc
Re: [PERL] расчленить почтовый адрес
Добавлено: 2010-09-08 15:33:35
hizel
а, ну ок, чо :}