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