[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