[Cascavel-pm] Verificar endereço em arquivo. .

Rafael Lebrão Martins rafamv1 em ig.com.br
Quinta Agosto 9 07:36:06 PDT 2007




Em (12:11:51), Cascavel Perl Mongers escreveu: 


>> Bom dia!! Preciso de uma ajuda... No código abaixo, a variável "$site" 
>> recebe os dados de um formulário html.. O conteúdo dessa variável é um 
>> endereço http, ele pode vir como ".perl.org.br" 
>> ou "[subdominio].perl.org.br".. O problema é o seguinte: 
>> Se eu tiver o endereço ".perl.org.br", não poderei adicionar 
>> qualquer coisa 
>> que contenha ".perl.org.br", como www.perl.org.br ou mail.perl.org.br. 
>> Preciso fazer com que o código faça isso!! 
> 
>Procure sempre reduzir o seu problema... se vc está com dúvidas nas 
>expressões regulares, faça um programa de teste. 
> 
>Com o programa abaixo eu consegui descobrir e resolver um problema de 
>lógica no grep: 
> 
>#!/usr/bin/perl 
> 
>use strict; 
>use warnings; 
> 
>use List::MoreUtils('any'); 
> 
>my @registrados = qw/ perl.org.br lalala.com /; 
> 
>while ( my $dominio = prompt() ) { 
> if ( grep( { $dominio =~ /$_$/ } @registrados ) ) { 
> print "registrado\n"; 
> } else { 
> print "nao registrado\n"; 
> } 
>} 
> 
>sub prompt { 
> print "Digite um dominio: "; 
> my $dominio = <>; 
>} 

Usei as linhas abaixo, elas funcionam até eu inserir uma nova entrada no 
arquivo, por exemplo, se no arquivo existir ".perl.org.br" e eu tentar 
adicionar "mail.perl.org.br", o código funciona. Mas se eu adicionar o site 
".perl.com.br" e tentar adicionar "mail.perl.com.br", o código adiciona (e 
não era para adicionar!). 
O arquivo no qual os dados são gravados, tem o seguinte formato: 
------------- 
.perl.org.br 
.microsoft.com 
www.vivaolinux.com.br 
etc... 
--------------------- 

if ( any{ $site =~ /$_$/ } @linhas ) { 
print redirect (SITEEXIST); 
} 
else { 
open ( LIBERADOS,"+>>$arquivo" ); 
print ( LIBERADOS "\n$site" ); 
close ( LIBERADOS ); 
system("squid -k reconfigure"); 
print redirect (SITELIBERADO); 
} 




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