Thread Löschen von Hash Elementen-Paar in foreach-Schleife (9 answers)
Opened by yippi at 2014-01-21 01:39

bianca
 2014-01-21 06:52
#173087 #173087
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Wenn du - wie es dringend zu empfehlen ist - mit CPAN:strict und CPAN:warnings arbeitest siehst du, was falsch läuft:
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
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

my %hash;
$hash{aa}='test1';
$hash{bb}='test2';
$hash{cc}='test1';
$hash{dd}='test3';

foreach my $key (sort keys %hash)
{
    print "\nSchluessel: $key   Wert: $hash{$key}";

        foreach my $keyvergleich (keys %hash)
        {
        if( $hash{$key} eq $hash{$keyvergleich} )
           {
              delete $hash{$keyvergleich};
              say "\nLoesche $keyvergleich";
           }
        }
}

Quote
Schluessel: aa Wert: test1
Loesche cc

Loesche aa

Schluessel: bb Wert: test2
Loesche bb
Use of uninitialized value in string eq at test.pl line 18.
Use of uninitialized value in concatenation (.) or string at test.pl line 14.

Use of uninitialized value in string eq at test.pl line 18.
Schluessel: cc Wert:
Schluessel: dd Wert: test3
Loesche dd

Während zwei Schleifen über die Keys iterieren löscht du diese. Keine gute Idee.
Und wenn du verrätst, was du erreichen willst können wir dir helfen, lauffähigen Code zu erstellen.
Last edited: 2014-01-21 06:54:50 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread Löschen von Hash Elementen-Paar in foreach-Schleife