Le code suivant génère une liste du nombre moyen de clients connectés par sous-réseau. Actuellement, je dois le faire passer par tri | uniq | grep -v HASH.Comment accéder à mes tableaux anonymes?
Essayer de garder tout en perl cela ne fonctionne pas:
foreach $subnet (keys %{keys %{keys %days}}) {
print "$subnet\n";
}
Source est la suivante:
foreach $file (@ARGV) {
open(FH, $file) or warn("Can't open file $file\n");
if ($file =~ /(2009\d{4})/) {
$dt = $+;
}
%hash = {};
while(<FH>) {
@fields = split(/~/);
$subnet = $fields[0];
$client = $fields[2];
$hash{$subnet}{$client}++;
}
close(FH);
$file = "$dt.csv";
open(FH, ">$file") or die("Can't open $file for output");
foreach $subnet (sort keys %hash) {
$tot = keys(%{$hash{$subnet}});
$days{$dt}{$subnet} = $tot;
print FH "$subnet,$tot\n";
push @{$subnet}, $tot;
}
close(FH);
}
foreach $day (sort keys %days) {
foreach $subnet (sort keys %{$days{$day}}) {
$tot = $i = 0 ;
foreach $amt (@{$subnet}) {
$i++;
$tot += $amt;
}
print "$subnet," . int($tot/$i) . "\n";
}
}
Comment puis-je éliminer la nécessité pour le tri | processus uniq en dehors de Perl? Le dernier foreach m'obtient les id de sous-réseau qui sont les noms «anonymes» pour les tableaux. Il génère ces plusieurs fois (un pour chaque jour où ce sous-réseau a été utilisé).
Etes-vous en train d'essayer de les imprimer? Jetez un oeil à Data :: Dumper. –
Quelle partie de votre code fonctionne, quelle partie ne fonctionne pas? Qu'essayez-vous d'accomplir? – innaM
Je ne suis pas sûr de la question, mais le code de débogage serait plus facile avec des restrictions: use strict, use warnings (strict voudra que tu déclares tes variables avec 'my') – Anonymous