Thread Arrays zusammenführen/mergen
(16 answers)
Opened by styx-cc at 2020-03-13 21:20
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) |