[Cascavel-pm] Script em Perl

rafamv1 rafamv1 em ig.com.br
Terça Fevereiro 27 02:08:03 PST 2007


 Bom dia, Gabriel. Sou iniciante ainda, por isso tantos erros. Estou me 
aprimorando no PErl, recentemente comprei o livro "Programação PErl". O 
script que vocÊ me passou apaga todo o conteúdo do arquivo, não apenas a 
linha que se refere a variável $site. O que você acha que pode ser? 

Em (00:14:26), 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