Re: помогите пожалуйста с перлом

От: Andrew V. Statsenko <CGatePro_at_mx_ru>
Дата: Wed 04 Mar 2009 - 13:24:29 MSK

В Втр, 03/03/2009 в 14:01 +0300, Герасимов Александр Викторович пишет:
> >Александр, вы могли бы более четко сформировать правила валидации ваших
> >адресов в части username в терминах "пропускаем bla-bla и gla-gla, все
> >остальное режем" ?
>
> Ну, на сколько я понимаю в адресах разрешены только латинские буквы, цифры, и некоторые знаки.
> По большому счету мне всеравно, главное чтобы перл не вешался.
> А письма принимаем только если нашли совпадение в текстовых списках!

Решение сильно кривое, но только "чтобы перл не вешался". Разрешает только username, который начинается на букву или цифру вида "username" , "user.name" , "user-name" . Вся остальная почта будет обрезана (!).

$ diff -u -U 5 mail.orig.pl mail.pl

--- mail.orig.pl        2009-03-04 13:06:05.000000000 +0300
+++ mail.pl     2009-03-04 13:11:04.000000000 +0300
@@ -46,10 +46,13 @@  

 sub checkAddress {

         my ($name,$domain)=@_;
         my $lines="";
         my $status="";
+
+       return undef if not $name =~ m/^\w+[-.]?\w+$/i ;
+
         open(FILE,$File1) or return undef;
         while(<FILE>){
                 if(/$name\@$domain/i){
                         return $Response1;
                 }else{
@@ -67,7 +70,5 @@
       }

    }
    close(FILE);

         return undef;
 }

То есть вставьте в ваш оригинальный скрипт после 50 строки: return undef if not $name =~ m/^\w+[-.]?\w+$/i ;'

Если нужны еще символы внутри username, то добавьте их в скобки [-.] .

---
С уважением,
Андрей Стаценко
Получено Wed Mar 04 10:24:39 2009

Этот архив был сгенерирован hypermail 2.1.8 : Wed 04 Mar 2009 - 16:15:42 MSK