[Cascavel-pm] Script em Perl

Gabriel Vieira gabriel.vieira em gmail.com
Segunda Fevereiro 26 19:14:26 PST 2007


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 = <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----------------------------


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 = <LIBERADOS>;
> close (LIBERADOS);
> print "@linhas\n";
> print "Insira o site a ser removido: ";
> my $site = <STDIN>;
> 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(r)
> Windows(r) 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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070227/e209780b/attachment.html 


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