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

hlubenow
 2020-03-14 16:13
#191532 #191532
User since
2009-02-22
875 articles
BenutzerIn
[default_avatar]
Wie Raubtier schon sagte, ist es keine gute Idee, in einer Schleife Elemente aus einer Struktur zu löschen, über die man gerade die Schleife laufen läßt.

In diesem Fall solltest Du mit einer Kopie der Struktur (Liste, Hash, usw.) arbeiten:
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
#!/usr/bin/perl

use warnings;
use strict;

use Data::Dumper;
use Clone qw(clone);

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

my $ranges_clone = clone($ranges);
        
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_clone->{$related_r};
        $ranges_clone->{$range} = \@merge_range;
    }
}
        
print "EDITED RANGES:\n";
print Dumper $ranges_clone;

Last edited: 2020-03-16 12:08:27 +0100 (CET)

View full thread Arrays zusammenführen/mergen