Re: hash-Zufall

Daniel Feist <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>

-- 
Daniel Feist <[email protected]>

On Sun, 16 Jan 2005, Michael Armbrecht wrote:

> Am Sonntag, 16. Januar 2005 13:22 schrieb Daniel Feist:
> > Hallo,
> > ich habe eine Frage zu Perl - und zwar, ob und wenn ja wie es möglich ist,
> > aus einer Hash-Variable wie diese:
> > %ganzer_name = ("Fred" => "Feuerstein",
> >                 "Barney" => "Geroellheimer",
> >                 );
> > einen einen zufälligen Schlüssel auszuwählen und dann nach seinem Wert zu
> > fragen? 
> 
> Spontan würde ich vorschlagen, die Liste der Schlüssel in eine Liste zu 
> schreiben, dann deren Länge (d.h. Anzahl der Elemente) zu bestimmen und dann 
> eine Zufallszahl zwischen 0 und der Anzahl der Elemente zu erzeugen. Dann das 
> Element $schluessel aus dem Schlüssel-Array mit Index $zufallszahl holen und 
> aus %ganzer_name den Wert für $schluessel abfragen (das hier ist aus dem Perl 
> Cookbook):
> 
> #!/bin/perl -w
> 
> %ganzer_name = (
> 		"Fred"	=>	"Feuerstein",
> 		"Barney"	=>	"Geroellheimer",
> 		);
> 
> @schluessel = keys(%ganzer_name);
> $zufall = $schluessel[ rand @schluessel ];
> 
> $wert = $ganzer_name{$zufall};
> 
> print "$wert\n";
> 
> > Schön wäre es, wenn man da den Zufallsgenerator rand oder 
> > ähnliches einbauen könnte.
> > Vielen Dank schonmal im voraus!
> 
> Bitte schön...

Danke für deine Hilfe! ;) - eine Funktion, die den Schlüssel vorgibt und 
nach einem Wert fragt, der dann mit Regulären Ausdrücken überprüft wird, 
have ich jetzt! Ich verstehe nur noch nicht ganz wie ich folgendes 
hinbekomme:

sub fuction {

%hash = qw< 
           Fred Feuerstein
	   Wilma Geroellheimer
           Pebbles Steintal
           >;

my $wert = $hash{$rand};
.
..
...
	
}

sub keys {

# An dieser Stelle mit $wert weiterarbeiten?
}
Am besten wäre s, wenn ich der 2. Funktion die erste irgendwie "geben" 
könnte, also sprich mit deren Werten weiterarbeiten kann.
Wie macht man das dann?

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    [email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.