Thread hash wird gelöscht/überschrieben(foreach und hash): warum wird hash gelöscht?!!
(12 answers)
Opened by bamboocha at 2005-05-18 12:22
aus der Funtion port_analyse hole ich mit ein Hash indem Macadressen und dessen Portnummern stehen.
Das will ich für mehrere Switches machen und alles in einem Hash speichern, der schlüssel ist die jeweilige Macadresse des Portes. Hier mal die Funktion Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 sub port_analyse { my %hash; my %oid_mac; my $z=""; my $item=""; my $oid=""; my $data=""; my $mac=""; my @zeichen; #Make hash for converting ASCII-character to integer (used for MAC readout) for(my $i=0; $i<256;$i++){ $z = sprintf("%c",$i); $hash{$z}=$i; } #foreach $item (@snmp_result_port_mac){ foreach $item (@_){ #Split the OIDs from the VALUEs and save them separate ($oid, $data) = split(/:/, $item, 2); #Perl converts the received data for MAC-Address (normaly returned #as hexadezimal numbers) into strings; this have to be reconverted for( my $i=0;$i<=5;$i++) { #Seperate the 6 characters representing the MAC-Address into array elements $zeichen[$i]=substr($data, $i, 1); } #Convert each character from ASCII-Character to its dezimal number #and convert the number into hexadezimal to get MAC $mac=sprintf("%.2X-%.2X-%.2X-%.2X-%.2X-%.2X\n",$hash{$zeichen[0]}, $hash{$zeichen[1]}, $hash{$zeichen[2]}, $hash{$zeichen[3]}, $hash{$zeichen[4]}, $hash{$zeichen[5]}); (my $port_oid) = split (/1\.3\.6\.1\.2\.1\.2\.2\.1\.6\./, $oid); $oid_mac{$mac} = $port_oid;   ;   ; } return (%oid_mac); } 1; |