[SP-pm] Sugestão

Eden Cardim edencardim at gmail.com
Wed Oct 7 10:06:49 PDT 2009


>>>>> "Joaquim" == Joaquim SONGTKLP <test_071009 em hotmail.com> writes:

    Joaquim> Amigos, boa noite Está vulgar?

 
    Joaquim> my $url = "www.google.com.br";
    Joaquim> my $gw1 = '10.10.10.1';
    Joaquim> my $gw2 = '192.168.0.1';
    Joaquim> my $p = Net::Ping->new( "icmp", 60, 64 );

Essas variáveis poderiam ser parametrizadas, dá uma olhada em um dos
módulos GetOpt do CPAN.
 
    Joaquim> open( N, "route |")

Evite usar barewords como filehandles, use um escalar, isso evita
confusão em potencial com nomes de pacote e funções.
E também, sempre use a assinatura de três argumentos, isso evita que
alguém injete um modo não desejado no open, caso você resolva
parametrizar o nome do arquivo.

    open(my($route), '-|', 'route')

    Joaquim> @_ = split(/s+/, $_);

Evite atribuir a @_, esse array é reservado para parâmetros de subrotinas.


    Joaquim> } else {
    Joaquim> open( N, "route |") {
    Joaquim> $_ = (<N>);
    Joaquim> @_ = split(/s+/, $_);
    Joaquim> qx(route del default gw $_[1]);
    Joaquim> qx(route add default gw $gw2);
    Joaquim> }

Esse trecho aqui é uma cópia do primeiro bloco do else, construa uma
subrotina e passe $gw1 ou $gw2 conforme for adequado. Além disso,
open é uma função que pode falhar, então sempre avalie o resultado.

    sub add_default {
      my($gw) = @_;
      open( my($route), 'route |') or die "couldn't open 'route': $!";
      my @in = split(/s+/, scalar <$route>);
      qx(route del default gw $in[1]);
      qx(route add default gw $gw);
    }

--
  Eden Cardim       Need help with your Catalyst or DBIx::Class project?
 Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://edenc.vox.com/            http://www.shadowcat.co.uk/servers/


More information about the SaoPaulo-pm mailing list