[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