[SP-pm] Como testar conexões remotas?

Thiago Glauco Sanchez thiagoglauco at ticursos.net
Sat Sep 18 06:05:04 PDT 2010


Em 17/09/2010 13:08, Daniel de Oliveira Mantovani escreveu:
> De imediato você, está fazendo algumas coisas que não tem muito
> sentido e outras que não deveriam estar lá.
>
>    
Sim sim.... use 5.12.0 carrega automaticamente use strict e use 
warnings, o use 5.10.0 ou inferiores não!
A função map{ } é um loop que retorna valores para serem guardados em 
outro array ou hash. Enfim, neste caso e em muitos casos não gera dano 
nenhum, apenas gera opcodes desnecessários para o interpretador do Perl. 
Não é "uma boa prática", mas não fere ninguém. As funções map, sort e 
grep trabalham como loops especializados. Você pode usa-los para outras 
coisas, eh bem comum ver por ai códigos com map que meramente descartam 
o valor. E como o Mantovani ressaltou isso só gera um warning. Você dá 
mais trabalho ao Perl por que ele vai gerar um valor de saída que vai 
ser descartado. O seu raciocínio de programação está evoluindo bem, é 
apenas questão de refinar um pouco o seu conhecimento de Perl e saber 
quando é "melhor usar uma pá e quando é melhor usar uma enxada". Você 
pode cavar um buraco com a enxada, mas a pá é muito melhor...

  %hash = map { get_a_key_for($_) => $_ } @array;

é o mesmo que:

  %hash = ();
  foreach (@array) {
      $hash{get_a_key_for($_)} = $_;
  }

aliás até os opcodes gerados pelo compilador serão praticamente os 
mesmos. Assim como for e foreach geram os mesmos opcodes.

> Quando você faz, 5.12.0 automaticamente você tem "use warnings" e "use
> strict" no seu código. Outra coisa, a unica coisa que você vai
> conseguir usando um map em void context é um warning avisando que o
> map está em void context, map não é para isso.
> Se você der uma lida no perldoc -f map, vai pegar o que é o "map".
>
>
>
> 2010/9/17 "Flávio R. Lopes"<flavio.lopes em links.inf.br>:
>    
>> Ops!...só corrigindo o link:
>>
>> http://gist.github.com/583692
>>
>>
>> Em 17-09-2010 01:40, "Flávio R. Lopes" escreveu:
>>      
>>> Olá pessoal.
>>>
>>> Fiz um programinha que sincroniza diretórios entre servidores. Como são
>>> vários servidores, gostaria de gerar tipo de um "log" que irá me mostrar
>>> quais as conexões (transferências) que deram certo e quais falharam.
>>> Por exemplo, gostaria de gerar um arquivo de log que me mostrasse mais ou
>>> menos o seguinte:
>>>
>>> Servidor server1 =>  Transferência Ok
>>> Servidor server2 =>  Transferência Ok
>>> Servidor server3 =>  Falhou
>>> (and so on...)
>>>
>>> O script é este: git://gist.github.com/583692.git
>>>
>>> Tentei jogar esta parte (abaixo) dentro de um "if", mas não funcionou:
>>> map {
>>>     $obj->exec( { src =>  $_ . ':/path/de/origem', dest =>  $servidor{$_} } )
>>>       or warn "A transferencia falhou!\n"
>>> } keys %servidor;
>>>
>>>
>>> Uma outra dúvida minha é a seguinte: Como eu usei a função "map" para
>>> tratar os elementos do meu Hash, quando eu disparo o script, ele
>>> automaticamente tenta fazer a conexão com TODOS os servidores listados
>>> dentro do Hash de uma única vez, ou seja, ele vai abrir tantas conexões
>>> quantas estiverem listadas no Hash. Constatei isto usando o "netstat -n"
>>>
>>> Daria para fazer um controle, tipo, só abrir uma conexão, quando uma outra
>>> for finalizada? Imaginei também testar a conexão, ou seja, pode ser que um
>>> determinado server não esteja "no ar"...
>>>
>>> Vocês podem me dar uma dica?
>>>
>>> Abraço,
>>> Flávio
>>>
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>>        
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>>      
>
>
>    


-- 
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall

Thiago Glauco Sanchez
Intrutor Perl e Redes
www.ticursos.net



More information about the SaoPaulo-pm mailing list