porovnavani inet masky

Janek Janek na isse.lipniknb.cz
Pátek Září 29 11:51:21 MEST 2000


"Václav Haisman" <wilx na raz-dva.cz> píše v diskusním příspěvku
news:8q5kto$kfa$1 na news.inet.tele.dk...
> 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.

chodi to i ted :)

P.S. co to je za konstrukce: $host = "(?i:$host)"; ???

> 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