Thread Hashwerte vergleichen: wahr oder nicht? (11 answers)
Opened by mordur at 2004-05-07 11:05

Crian
 2004-05-07 16:57
#82073 #82073
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
sub test_hash {
    my $hr = shift;
    my %h;
    return 1 if ++$h{$_} > 1 for values %$hr;
    return 0;
}


ungetestet...

Edit: Mist, funktioniert nicht... aber so:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use strict;
use warnings;

my %Hash = ( a => 1,
            b => 2,
            c => 3,
          );
my %HasH = ( a => 1,
            b => 2,
            c => 1,
          );

print test_hash(\%Hash), "\n";
print test_hash(\%HasH), "\n";

sub test_hash {
   my $hr = shift;
   my %h;
   for (values %$hr) {return 1 if ++$h{$_} > 1}
   return 0;
}


Gibt aus:

Code: (dl )
1
2
0
1


Naja, keine Überrauschung ;)


Edit2: Dies hier

Code: (dl )
    ++$h{$_} > 1 ? return 1 : print "" for values %$hr;


schluckt er und es funktioniert auch, aber das ist häßlich (und lahm). Warum wag er die

### if ### for ###;

Form nicht? *grmbl* ;-)\n\n

<!--EDIT|Crian|1083935230-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Hashwerte vergleichen: wahr oder nicht?