Thread Key im Hash ändern (4 answers)
Opened by bianca at 2010-08-07 16:54

bianca
 2010-08-07 16:54
#140447 #140447
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Hi!
Hab einen Hash, dessen Key oberster Ordnung forlaufende Zahlen beginnend bei 1 sind.
Nun möchte ich quasi Nr. 2 löschen und dann soll Nr. 3 zu 2 und Nr. 4 zu 3 werden, also die Keys ändern.
Und dabei breche ich mir hier gerade einen mit Schleifen ab, es funktioniert zwar, gefällt mir aber überhaupt nicht.

Ich möchte es gern etwas eleganter und "perliger".
Würde mich über Hilfe sehr freuen.

Vielen Dank

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
#!/usr/bin/perl -W
use strict;
use warnings;
use diagnostics;
use Fcntl qw(:DEFAULT :flock);
use Data::Dumper;
local $Data::Dumper::Sortkeys = \&dumper_sort;
sub dumper_sort {
    my ($hash) = @_;
    return [(sort {lc $a cmp lc $b} keys %$hash)];
}

my %test = (
    1 => 'foo',
    2 => 'bar',
    3 => 'foobar',
    4 => 'barfoo',
);
my $loesche = 2;
print Dumper (\%test);
if ($loesche == keys %test) {
    delete $test{$loesche};
}
else {
    for ($loesche + 1..keys %test) {
        $test{$_ - 1} = $test{$_};
        delete $test{$_};
    }
}
print Dumper (\%test);
10 print "Hallo"
20 goto 10

View full thread Key im Hash ändern