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