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

"Flávio R. Lopes" flavio.lopes at links.inf.br
Sat Sep 18 19:22:40 PDT 2010


Em 18-09-2010 10:05, Thiago Glauco Sanchez escreveu:
> 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.
Hummm....Ok!
Obrigado Thiago.
>
>> 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
>>>
>>
>>
>
>



More information about the SaoPaulo-pm mailing list