Informationen aus zwei Array's logisch verknüpfen und sortieren?!

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Informationen aus zwei Array's logisch verknüpfen und sortieren?!

    Guten Tag,

    ich habe ein kleines Problem in PERL.

    Zu der Problemstellung selbst:
    Ich habe zwei Array's namens @descr und @index.

    jeweils die gleichen Indizes der beiden Felder gehören logisch zusammen.

    Der Wert aus $descr[0] und $index[0] sollen also irgendwie "zusammengefasst" werden.
    Dazu habe ich im Beispielcode unten versucht die Werte in ein neues @combined_array zu pushen:

    Source Code

    1. use Data::Dumper;
    2. my @descr = ("Fa1/0","Gi0/1","Fa0/1","Fa0/2","Fa0/3","Fa0/7");
    3. my @index = ("5","6","1","2","3","4");
    4. my @combined_array;
    5. for ($i=0; $i <= $#descr; $i++){
    6. my $hashref = {$descr[$i] => $index[$i]};
    7. push(@combined_array, $hashref);
    8. }
    9. print Dumper @combined_array;
    Display All


    Die Ausgabe auf der Kommandozeile sieht wie folgt aus:

    Source Code

    1. $VAR1 = {
    2. 'Fa1/0' => '5'
    3. };
    4. $VAR2 = {
    5. 'Gi0/1' => '6'
    6. };
    7. $VAR3 = {
    8. 'Fa0/1' => '1'
    9. };
    10. $VAR4 = {
    11. 'Fa0/2' => '2'
    12. };
    13. $VAR5 = {
    14. 'Fa0/3' => '3'
    15. };
    16. $VAR6 = {
    17. 'Fa0/7' => '4'
    18. };
    Display All


    Nun müsste das ganze aber noch nach dem "Schlüssel" sortiert sein. Das heißt Fa0/1 soll an erster Stelle stehen, Gi0/1 an letzter Stelle.

    Kann mir irgendjmd. irgendeinen Gedankenschub geben wie ich dieses Problem am Besten lösen könnte?

    Dank für alle Tipps!
  • Hallo


    Source Code

    1. my @descr = ("Fa1/0","Gi0/1","Fa0/1","Fa0/2","Fa0/3","Fa0/7","Fa4/7","Fa10/5");
    2. my @index = ("5","6","1","2","3","4","7","8");
    3. my %hash;
    4. for ($i=0; $i <= $#descr; $i++){
    5. $hash{$descr[$i]}=$index[$i];
    6. }
    7. foreach $key (%hash)
    8. {
    9. print "$key is $hash{$key} years old\n";
    10. }
    11. print "\n";
    12. %hash = ("Fa1/0" =>1,"Gi0/1"=>2,"Fa0/1"=>3,"Fa0/2"=>4,"Fa0/3"=>5,"Fa0/7"=>6,"Fa4/7"=>7,"Fa10/5"=>8);
    13. foreach $key (%hash)
    14. {
    15. print "$key is $hash{$key} years old\n";
    16. }
    17. while (($key, $value) = each %hash)
    18. {
    19. print "$key is $hash{$key} years old\n";
    20. }
    21. foreach $key (sort {$a <=> $b}(keys(%hash))) {
    22. print "\t\t$key \t\t$hash{$key}\n";
    23. }
    24. #foreach $key (sort {$hash{$a} cmp $hash{$b}} keys %hash) {
    25. # print $key > $hash{$key}
    26. # };
    27. #foreach $key (sort {$a <=> $b} keys %hash) {print $key > $hash{$key}};
    Display All


    keys, nummerisch: foreach $key (sort {$a <=> $b} keys %hash) {print $key > $hash{$key}};
    keys, alphabetisch: foreach $key (sort keys %hash) {print $key > $hash{$key}};
    keys absteigend, nummerisch: foreach $key (sort {$b <=> $a} keys %hash) {print $key > $hash{$key}};
    values, nummerisch: foreach $key (sort {$hash{$a} <=> $hash{$b}} keys %hash) {print $key > $hash{$key}};
    values, alphabetisch: foreach $key (sort {$hash{$a} cmp $hash{$b}} keys %hash) {print $key > $hash{$key}};
    Helmut Hagemann
    Derjenige, der sagt: Das geht nicht, soll den nicht stören, der's gerade tut.