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

hucks
 2006-08-18 13:44
#33255 #33255
User since
2006-08-10
16 Artikel
BenutzerIn
[default_avatar]
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;              &nbsp
;              &nbsp
;  

            }

    return (%oid_mac);

}

1;

View full thread hash wird gelöscht/überschrieben(foreach und hash): warum wird hash gelöscht?!!