You are not logged in.

  • Login

1

Wednesday, April 28th 2010, 2:58pm

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
2
3
4
5
6
7
8
9
10
11
12
13
14
use Data::Dumper;

my @descr = ("Fa1/0","Gi0/1","Fa0/1","Fa0/2","Fa0/3","Fa0/7");
my @index = ("5","6","1","2","3","4");

my @combined_array;


for ($i=0; $i <= $#descr; $i++){
    my $hashref = {$descr[$i] => $index[$i]};
    push(@combined_array, $hashref);                                
}

print Dumper @combined_array;


Die Ausgabe auf der Kommandozeile sieht wie folgt aus:

Source code

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


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!

2

Wednesday, April 28th 2010, 5:32pm

Hallo


Perl Quellcode

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
my @descr = ("Fa1/0","Gi0/1","Fa0/1","Fa0/2","Fa0/3","Fa0/7","Fa4/7","Fa10/5");
my @index = ("5","6","1","2","3","4","7","8");
 
my %hash;
for ($i=0; $i <= $#descr; $i++){
   $hash{$descr[$i]}=$index[$i];
}
 
 
foreach $key (%hash)
{
print "$key is $hash{$key} years old\n";
}
 
print "\n";
 
%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);
foreach $key (%hash)
{
print "$key is $hash{$key} years old\n";
}
 
 
while (($key, $value) = each %hash)
{
  print "$key is $hash{$key} years old\n";
}
foreach $key  (sort {$a <=> $b}(keys(%hash))) {
   print "\t\t$key \t\t$hash{$key}\n";
}
#foreach $key (sort {$hash{$a} cmp $hash{$b}} keys %hash) {
#	print $key > $hash{$key}
#	};
#foreach $key (sort {$a <=> $b} keys %hash) {print $key > $hash{$key}};


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}};

Similar threads

Social bookmarks