Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6098[/thread]

hash sortiert ausgeben: hash nach bestimmter sortierreihenfolge

Leser: 1


<< >> 4 Einträge, 1 Seite
Gast Gast
 2004-02-26 23:54
#80354 #80354
Hallo ,

ich habe einen hash der undgefaehr so aufgebaut ist (Was genau drin steht weiss ich nicht)

$mein_hash{"eintrag1"} = "791";
$mein_hash{"eintrag2"} = "12000";
$mein_hash{"eintrag3"} = "prompt";
$mein_hash{"eintrag4"} = "32wx";

immer drin ist "eintrag2" was sonst noch kommt ist variabel
"eintrag4" kann vorkommen.

jetzt will ich das sortiert in eine datei schreiben
undzwar zuerst eintrag2, dann eintrag4 und der rest ist egal.

ich habe mir gedacht ich mach mir nen hilfs-array wo drin steht
@array = qw ( eintrag2 eintrag4 );
und lauf den hash dann anhand von diesem durch
aber was mache ich mit den eintraegen die variabel sind ? ich weiss ja nicht was da noch steht ?

ich brauchte also sowas wie:
durchlaufe mir den hash $mein_hash undzwar zuerst "eintrag2" dann "eintrag4" und dann der rest.

jemand eine idee ?

vielen dank
jn
Crian
 2004-02-27 00:25
#80355 #80355
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Du kannst Hashes u.a. sortiert nach Schlüsseln oder nach Werten oder nach einer wie auch immer gearteten Vorliebe ausgeben lassen.

Zum Thema Hashes sortiert ausgeben findest Du auf meiner Perl-Seite unter Snippets mehrere Einträge und auf Strats Seite noch einige wertvolle allgemeine Tipps zum Sortieren.\n\n

<!--EDIT|Crian|1077834929-->
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
coax
 2004-02-27 00:52
#80356 #80356
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Vielleicht ist das ja was fuer dich:
Die festen Werte werden erst ausgelesen und aus den Hash geloescht, dann hast du die separat von den Rest.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my %hash = (aaa => 1, bbb => 2, ccc => 3,
ddd => 4, eee => 5, fff => 6);

# die festen Werte auslesen und aus den Hash loeschen
my $erster = $hash{aaa} && delete $hash{aaa};
my $zweiter = $hash{fff} && delete $hash{fff};

printf("Wert von aaa: %s\nWert von fff: %s\n", $erster, $zweiter);


# den Rest ausgeben
print "$_\n" for keys %hash;



Grusz Christian.\n\n

<!--EDIT|coax|1077836067-->
,,Das perlt aber heute wieder...'' -- Dittsche
Ishka
 2004-02-27 04:14
#80357 #80357
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Sowas?
for(sort keys %mein_hash){print "$_ => $mein_hash{$_}\n"}
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< >> 4 Einträge, 1 Seite



View all threads created 2004-02-26 23:54.