[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