[Cascavel-pm] Script em Perl

rafamv1 rafamv1 em ig.com.br
Terça Fevereiro 27 05:20:27 PST 2007


 Oi Fernando. Preciso colocar para funcionar o código no script. Gabriel 
Vieira me passou esse novo script, no entanto ele apaga todo o conteúdo do 
arquivo. Eu precise que ele apague somente o site que for digitado na 
variável $site. Consegui fazer o script inverso, para adicionar sites na 
mesma lista,contudo, não entendi a lógica de como retirar um determinado 
site. Segue abaixo o script que o Gabriel me passou. 

#!/usr/bin/perl 

use warnings; 
use strict; 

my $arquivo = '/etc/squid/arquivos/liberados/dl_geral'; 

open(LIBERADOS,$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!"; 
my @linhas = <LIBERADOS>; 
close (LIBERADOS); 
print "@linhas\n"; 

# leitura 
print "Insira o site a ser removido: "; 
my $site = <STDIN>; 
chomp $site; 

# execução 
open(LIBERADOS,">",$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!"; 
foreach my $linha (@linhas){ 
     if ($linha eq $site){ 
          print "O site $site foi removido com sucesso\n"; 
     } 
     else{ 
          print LIBERADOS "$linha\n"; 
     } 
} 
close(LIBERADOS) or die "Nao pode fechar o arquivo $arquivo: $!"; 

else { 
     open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo 
$arquivo: $!" ); 
     print ( LIBERADOS "\n$site" ); 
     close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo $arquivo: $!" 
); 
     system("squid -k reconfigure"); 
     print " O site foi adicionado com sucesso.\n"; 
} 
---------------------------->8---------------------------- 



Em (09:55:49), Cascavel Perl Mongers escreveu: 


>_______________________________________________ 
>Cascavel-pm mailing list 
>Cascavel-pm em pm.org 
> 
>---------- 
> 
> Só pra começar: 
>O especificardor ">>" é utilizado para inserir (acrescentar) novo conteúdo 
a um arquivo. Já o especificador ">" é utilizado para definir um novo 
conteúdo (apaga o antigo e coloca o novo) ou ainda criar o arquivo. 
> 
>Seguindo: 
> 
>- A sua estrutura está muito prematura. 
>- Você usa um "open" que não possui especificamente um "close". 
>- Você faz uma substituição que não lhe serve de nada, em uma variável cujo 
valor não é o que você espera. 
> 
>- Você não alterou o conteúdo do arquivo, logo ele permanecerá o mesmo a 
não ser que um novo site seja adicionado. 
> 
>Abuse do poder do Perl :D 
> 
>Fazendo o seu código funcionar: 
> 
>- Apenas coloquei para que fosse impresso um novo conteúdo ao arquivo, 
sendo que esse novo conteúdo seria o conteúdo atual com excessão da linha 
cujo valor é o "$site". 
> 
>----------------------------8<---------------------------- 
>#!/usr/bin/perl 
> 
>use warnings; 
>use strict; 
> 
>my $arquivo = '/etc/squid/arquivos/liberados/dl_geral'; 
> 
>open(LIBERADOS,$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!"; 
>my @linhas = ; 
>close (LIBERADOS); 
>print "@linhas\n"; 
> 
># leitura 
>print "Insira o site a ser removido: "; 
> 
>my $site = ; 
>chomp $site; 
> 
># execução 
>open(LIBERADOS,">",$arquivo) or die "Nao pode abrir o arquivo $arquivo: 
$!"; 
>foreach my $linha (@linhas){ 
> if ($linha eq $site){ 
> 
> print "O site $site foi removido com sucesso\n"; 
> } 
> else{ 
> print LIBERADOS "$linha\n"; 
> } 
>} 
>close(LIBERADOS) or die "Nao pode fechar o arquivo $arquivo: $!"; 
> 
>else { 
> open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo 
$arquivo: $!" ); 
> print ( LIBERADOS "\n$site" ); 
> close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo $arquivo: $!" ); 
> 
> system("squid -k reconfigure"); 
> print " O site foi adicionado com sucesso.\n"; 
>} ---------------------------->8---------------------------- 
> 
>On 2/22/07, Rafael Lebrão Martins < rafamv1 em ig.com.br > wrote: 
>Boa tarde, estou com problemas para criar um script que remove sites de uma 
>lista do squid. A função do script é receber como argumento o nome do site 
a 
>ser removido, caso o site exista na lista e imprimir na tela a mensagem de 
> 
>que o site foi removido com sucesso. Fiz o script abaixo, quando o executo 
>ele imprime a mensagem de que o site foi removido, no entanto, se eu abro o 
>arquivo do squid o site continua lá. Preciso de ajuda para resolver esse 
> 
>problema... Segue abaixo o script... Obrigado. 
> 
>#!/usr/bin/perl 
> 
>use warnings; 
>use strict; 
> 
>my $arquivo = '/etc/squid/arquivos/liberados/dl_geral'; 
>open ( LIBERADOS,$arquivo ) or die ( "Nao pode abrir o arquivo: $!" ); 
> 
>my @linhas = ; 
>close (LIBERADOS); 
>print "@linhas\n"; 
>print "Insira o site a ser removido: "; 
>my $site = ; 
>chomp $site; 
>open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo: $!" ); 
> 
>my $linhas = "@linhas"; 
>if ($linhas =~ $site) { 
>#delete (LIBERADOS $site}; 
> s/$site/funcionou/gi; 
>print "O site $site foi removido com sucesso\n"; 
>close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo: $!" ); 
> 
>} 
> 
>else { 
>open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo: $!" ); 
>print ( LIBERADOS "\n$site" ); 
>close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo: $!" ); 
> 
>system("squid -k reconfigure"); 
>print " O site foi adicionado com sucesso.\n"; 
>} 
> 
>Rafael Lebrao Martins. 
>Cursando Ciências Contábeis. 
>Universidade Estadual Do 
> 
>Sudoeste Da Bahia. 
>Microsoft Certified 
>Professional 
>70-271:Supporting Users and 
>Troubleshooting a Microsoft 
>Windows XP Operating System 
>TEL - (77) 9989-6327 
> 
>_______________________________________________ 
> 
>Cascavel-pm mailing list 
> Cascavel-pm em pm.org 
> http://mail.pm.org/mailman/listinfo/cascavel-pm 
> 
>-- 
>Gabriel Vieira 
> 
>---------- 




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