Schrift
[thread]6886[/thread]

hashfrage: vergleich

Leser: 1


<< >> 9 Einträge, 1 Seite
misterx
 2005-04-13 11:47
#53742 #53742
User since
2005-03-28
23 Artikel
BenutzerIn
[default_avatar]
Ich hae einen Hash, indem am ende steht:

20,20
5,5
7,7, usw.
wie kann ich vergleichen, ob das erste Element grösser ist als das zweite oder umgekehrt?
Ich habe sowas, funktioniert aber nicht:
Code: (dl )
1
2
3
4
5
6
7
foreach $element (keys %hash) 
{

if ($hash{$element = [0]} gt $hash{$element = [1]})
{
print "Eintrag stimmt nicht überein $hash{$_} .\n"
}


Danke für die Antwort!
Grüsse
renee
 2005-04-13 12:02
#53743 #53743
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du ein Hash of Arrays??

Dann:
Code: (dl )
1
2
3
4
5
foreach $element (keys %hash){  
if ($hash{$element}->[0] > $hash{$element}->[1]){
print "Eintrag stimmt nicht überein $hash{$_} .\n"
}
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2005-04-13 12:04
#53744 #53744
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
In einem Hash gibt es kein Anfang und kein Ende wie bei Arrays, also keinen Index.
Allerdings kannst du über die sortierten keys zugreifen.

So ganz habe ich die Datenstruktur deines Hashes nicht verstanden.\n\n

<!--EDIT|GwenDragon|1113379526-->
misterx
 2005-04-13 12:18
#53745 #53745
User since
2005-03-28
23 Artikel
BenutzerIn
[default_avatar]
also sowas
Code: (dl )
@compare = sort {$element($0) <=> $element($1)} (keys(%hash));

Mein hash hat als Ausgabe
datum ip nummer id id; also z.B.
20050412 127.0.0.1 1,1
20050412 127.0.0.1 1,2
20050412 127.0.0.1 3,1

jetzt möchte ich vergleichen, ob die erste id gleich der zweiten ist - dann ist alles ok, ansonsten print: id1 grösser als id2, oder umgekehrt.
Grüsse
renee
 2005-04-13 12:42
#53746 #53746
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mach mal
Code: (dl )
1
2
use Data::Dumper;
print Dumper(\%hash);


und zeig uns, wie Dein Hash aufgebaut ist... Darüber lässt Du uns hier nämlich im Unklaren...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2005-04-13 12:49
#53747 #53747
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=misterx,13.04.2005, 10:18]
Code: (dl )
@compare = sort {$element($0) <=> $element($1)} (keys(%hash));
[/quote]
was ist aus dem guten alten $a und $b geworden?
misterx
 2005-04-13 13:39
#53748 #53748
User since
2005-03-28
23 Artikel
BenutzerIn
[default_avatar]
Danke, hat sich erledigt. Habe es inzwischen hinbekommen. Es lag an \; also einer Referenz.
Es funktioniert nun.
Grüsse
Crian
 2005-04-13 15:48
#53749 #53749
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
aber bestimmt nicht mit $0 und $1 ^^
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
misterx
 2005-04-13 21:34
#53750 #53750
User since
2005-03-28
23 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,13.04.2005, 13:48]aber bestimmt nicht mit $0 und $1 ^^[/quote]
nein, natürlich nicht. Es war die Referenz, die gefehlt hatte.
<< >> 9 Einträge, 1 Seite



View all threads created 2005-04-13 11:47.