[Cascavel-pm] ER's

Nilson Santos Figueiredo Junior acid06 em gmail.com
Domingo Junho 19 18:45:32 PDT 2005


On 6/19/05, Marcilio <marciliomoura em uai.com.br> wrote:
> print "Erro" if $DNS_PRIMARIO =~ /[^0-9.^]|\^/;
> Porém não restringe quantos pontos vão ser digitados nem a
> faixa IP tipo Ip valido ou Invalido,quantas casas etc...
> alguem tem algum exemplo ou pode me dar um help ?

Pra esse tipo de coisa, o módulo Regexp::Common (que tem regex prontas
pra todo tipo de situação comum) costuma vir a calhar:

use Regexp::Common qw /net/;
$string =~ /$RE{net}{IPv4}/;

Além de validar, ele ainda captura o IP inteiro em $1 e as quatro
componentes do IP em $2 .. $5, dessa forma, você pode fazer assim:

my ($ip, @ip) = ($string =~ /$RE{net}{IPv4}/);

E o IP completo estará em $ip e na array @ip você terá o ip dividido nas faixas.

Informações sobre o módulo:
http://search.cpan.org/~abigail/Regexp-Common-2.120/
http://search.cpan.org/~abigail/Regexp-Common-2.120/lib/Regexp/Common/net.pm

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm