porovnavani inet masky

Václav Haisman wilx na raz-dva.cz
Pondělí Září 18 19:55:00 MEST 2000


Obavam se ze ti nic jineho nez regulerni vyrazy nepomuze. ;)))
Delal jsem jednou to same pro irc bot. Zkus tohle:

# returns arg2 if arg1 (mask w/ wildcards) matches arg2 (mask w/o wildcards)
# else returns undef
sub mask_match {
    my ($m1, $m2) = @_;

    my ($nick,$user,$host) = ($m1 =~ /(.*?)!(.*?)\@(.*)/);

    $nick =~ s/\?/./g;
    $nick =~ s/\*/.*?/g;
    $nick =~ s/(\\|\|)/\\$1/g;
    $nick = "(?i:$nick)";

    $user =~ s/\?/./g;
    $user =~ s/\*/.*?/g;

    $host =~ s/\?/./g;
    $host =~ s/\*/.*?/g;
    $host = "(?i:$host)";

    $m1 = "$nick\!$user\@$host";

    return( ($m2 =~ /$m1/) ? $m2 : undef );
}

Pravdepodobne to neni ten nejefektivnejsi ani nejelegantnejsi zpusob, ale
naposledy co jsem to pouzival, tak to fungovalo.

Vaclav Haisman

"Janek" <Janek na isse.lipniknb.cz> wrote in message
news:8pqhmt$gdo$1 na ern.kit.vslib.cz...
> Dobry den,
>
> neni nahodou nejaky modul na porovnavani inet masky ?
>
> napr. mam masku janek na isse.lipniknb.cz a ve externim textaku je
> *anek@*.lipniknb.cz
>
> ja bych potreboval aby PERL zjistil jestli masky sedi
>
> dalsi vec, je sice podobna ale uz ne tak dulezita:
>
> janek!janek na isse.lipniknb.cz zkontrolovat s *!*anek@*.lipniknb.cz
>
> uz si neumim pomoct, regularni vyrazi me desi :(((
>
> ---
> janek na isse.lipniknb.cz
>
>
>




Další informace o konferenci Perl