Der folgende Code erzeugt eine Liste der durchschnittlichen Anzahl von Clients durch Subnetz verbunden. Momentan muss ich es durch sort | uniq | grep -v HASH pipen.Wie komme ich zu meinen anonymen Arrays?
Der Versuch, alles in Perl zu halten dies nicht funktioniert:
foreach $subnet (keys %{keys %{keys %days}}) {
print "$subnet\n";
}
Quelle ist dies:
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";
}
}
Wie kann ich die Notwendigkeit, dass die Art beseitigen | uniq-Prozess außerhalb von Perl? Der letzte foreach erhält die Subnetz-IDs, die die 'anonymen' Namen für die Arrays sind. Es wird mehrmals generiert (eine für jeden Tag, an dem das Subnetz verwendet wurde).
Versuchen Sie, nur um sie zu drucken? Sehen Sie sich Data :: Dumper an. –
Welcher Teil Ihres Codes funktioniert, welcher Teil nicht? Was versuchst du zu erreichen? – innaM
Ich bin nicht sicher, was die Frage ist. Debugging-Code wäre einfacher mit Strikturen, obwohl: Verwenden Sie strikte; Verwenden Sie Warnungen; (strikt wird wollen Sie Ihre Variablen mit 'meine') – Anonymous