Hallo greywolve,Was Du vorhast, geht sicher. Ich finde Deine Idee auch gut, in parallelen Arrays (d.h. unter demselben Index) unterschiedliche Informationen abzulegen.
Hashes könnten eine Abkürzung für Dich sein, ganz ohne for, if's usw.; mußt Du 'mal sehen, ob das in Deinen Programmansatz paßt.
Wenn ich das richtig verstehe, gibt es keine undefinierten Einträge in A3. A2 kann Lücken haben, vielleicht auch A1 (die IPs). Ich würde dann so aufteilen:
1) %active Hash; Index = Netbios vom ActiveDir (bei Dir Werte im Array3); Werte = Netbios (Array2)
2) %ip Hash; ; Index = Netbios vom ActiveDir; Werte = IP-Adressen
Das könnte dann so aussehen (bin faul, daher kopiere ich vom Perl Debugger; na steht für die Netbiosnamen aus dem ActiveDir, n steht für die anderen Netbiosnamen):
DB<1> %active=qw/na1 n1 na2 n2 na3 undef/;
# key value Paare ActiveDir anlegen
DB<2> x \%active
0 HASH(0x1a8f3b0)
'na1' => 'n1'
'na2' => 'n2'
'na3' => 'undef'
# hübsch anzeigen: Active => Netbios
DB<3> %ip=qw/na1 1.2.3.4 na2 1.2.3.5 na3 1.2.3.6/;
# key value Paare IPs anlegen
DB<4> x \%ip
0 HASH(0x1ad50dc)
'na1' => '1.2.3.4'
'na2' => '1.2.3.5'
'na3' => '1.2.3.6'
# hübsch anzeigen
DB<5> print "$active{'na2'} $ip{'na2'}\n";
n2 1.2.3.5
Zeilen <1>, <3> und <5> könnten so auch in Deinem Programm stehen (hab' 'mal das Semikolon extra gesetzt, um das hervorzuheben). Zusätzlich siehst Du in <5> den print-Output.
Hilft Dir das weiter?
Du kannst dann immer noch alle Indizes durchgehen, z.B.:
foreach $index (sort keys %active) {
print "$index $ip{$index}\n";
}
Das ergibt dann:
DB<6> foreach $index (sort keys %active) {print "$index $ip{$index} $active{$index}\n";}
na1 1.2.3.4 n1
na2 1.2.3.5 n2
na3 1.2.3.6 undef
(Ok, undef siehst Du nur im Debugger. Auf dem Screen ist da eben nix.)
Gut, ohne Debugger:
%active=qw/na1 n1 na2 n2 na3 undef/; # key value Paare ActiveDir anlegen
%ip=qw/na1 1.2.3.4 na2 1.2.3.5 na3 1.2.3.6/; # key value Paare IPs anlegen
print "$active{'na2'} $ip{'na2'}\n";
foreach $index (sort keys %active) {
print "$index $ip{$index} $active{$index}\n";
}
Gruß, Michael
Datum: 30.11.2005-22:03
