Thread Arrays zusammenführen/mergen (16 answers)
Opened by styx-cc at 2020-03-13 21:20

styx-cc
 2020-03-13 21:20
#191508 #191508
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hallo Forum!

Irgendwie stehe ich bei einer eigentlich trivialen Aufgabe seit einigen Stunden auf dem Schlauch, und bevor ich noch 3x spazieren gehe, frag ich einfach mal was ich falsch mache.

Ziel ist es die referenzierte (Hashkey) Arrayreferenz an die andere anzuhängen und die nun nicht mehr benötigte zu löschen.

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
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my $ranges =
{
  1282 => [
    25,
    40,
    5,
    undef
  ],
  1283 => [
    300,
    400,
    25,
    1282
  ],
  1284 => [
    20,
    30,
    5,
    undef
  ],
  1285 => [
    250,
    260,
    10,
    1284
  ],
  1286 => [
    25,
    30,
    5,
    undef
  ],
  1287 => [
    "0.003",
    "0.005",
    "0.001",
    1286
  ],
};
        
for my $range (keys %$ranges) {
        my $related_r = @{ $ranges->{$range} }[3];
        if ( defined $related_r ) {
                my @merge_range;
                @merge_range = ( @{$ranges->{$range}}[0..2], @{$ranges->{$related_r}}[0..2] ); 
                delete $ranges->{$related_r};
                $ranges->{$range} = \@merge_range;
        }
}
        
print "EDITED RANGES:\n";
print Dumper $ranges;


Ausgabe:
Code: (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
EDITED RANGES:
$VAR1 = {
'1283' => [
300,
400,
25,
25,
40,
5
],
'1287' => [
'0.003',
'0.005',
'0.001',
25,
30,
5
],
'1282' => [],
'1285' => [
250,
260,
10,
20,
30,
5
],
'1284' => []
};


Das Zusammenführen klappt ja soweit, aber warum löscht er '1284' => [] und '1282' => [] nicht, jedoch die 1286?

Ich bin für Erlösung sehr dankbar!

Lieben Gruß
Last edited: 2020-03-13 21:56:05 +0100 (CET)
Pörl.

View full thread Arrays zusammenführen/mergen