[SP-pm] Como "ler" uma array que está dentro de um bloco "privado" ?

Nelson Ferraz nferraz at gmail.com
Sun May 2 23:49:32 PDT 2010


Flávio,

Você deve declarar a variável fora do loop, para que ela continue a
existir quando o loop terminar.

my (@ativo, em inativo);

for (1..254) {
    my $ip = "...";
    # ...
    if ( ... ) {
       push @ativo, $ip; # use "push" para empilhar itens em um array
    } else {
       push @inativo, $ip;
    }
}

# as variáveis declaradas fora do loop continuam a existir
print "Ativos: ", join(",", em ativo}, "\n";
print "Inativos: ", join(",", em inativo}, "\n";

Além de arrays, você também poderia ter usado hashes:

my %ip;

for (1..254) {
    my $ip = "...";
    # ...
    if ( ... ) {
       $ip{$ip} = 1;
    } else {
       $ip{$ip} = 0;
    }
}

print "Ativos: ", join(",", grep { $ip{$_} == 1 } sort keys %ip}, "\n";
print "Inativos: ", join(",", grep { $ip{$_} == 0 } sort keys %ip}, "\n";

Enfim... TIMTOWTDI.


More information about the SaoPaulo-pm mailing list