Übergabe eines Hashes in eine Subroutine
SI
- perl
Hallo zusammen,
ich will einen hash von Arrays namens %hash in eine Subroutine übergeben
und dann dort die Daten auslesen ( also ich muss Sie nicht verändern ).
Nun weiss ich aber nicht wie das gehen soll !
Da ja alles irgendiwe in dem Array @_ gespeichert wird, weiss ich jetzt nicht
wie ich das mit einem %hash machen soll, der auch noch Arrays beinhaltet.
Bitte um Rat:
Bspcode der verdeutlichen soll was ich mahen will:
test(%hash);
sub test
{
for my $k (keys %hash)
{
print "$k - @{$hash{$k}} \n";
}
}
DAnke für Hilfe
SI
Bitte um Rat:
Bspcode der verdeutlichen soll was ich mahen will:test(%hash);
sub test
{
for my $k (keys %hash)
{
print "$k - @{$hash{$k}} \n";
}}
so wie ich dich verstehe willst du den hash nicht duplizieren. wenn du nicht, wie in deinem beispiel, die originalvariable hernehmen willst, kannst auch mit zeigern arbeiten. wie genau das funktioniert weiß ich leider auch nicht, aber google wird wohl bei den suchbegriffen perl und pointer schon was brauchbares ausspucken.
max
Bitte um Rat:
Bspcode der verdeutlichen soll was ich mahen will:test(%hash);
sub test
{
for my $k (keys %hash)
{
print "$k - @{$hash{$k}} \n";
}}
so wie ich dich verstehe willst du den hash nicht duplizieren. wenn du nicht, wie in deinem beispiel, die originalvariable hernehmen willst, kannst auch mit zeigern arbeiten. wie genau das funktioniert weiß ich leider auch nicht, aber google wird wohl bei den suchbegriffen perl und pointer schon was brauchbares ausspucken.
Zeiger gibt es nicht wirklich in Perl. Du meinst Referenzen.
Das geht so:
test(%hash);
sub test
{
my $hash = shift;
for my $k (keys %$hash)
{
print "$k - @{$hash->{$k}} \n";
}
da gibt's doch bestimmt das passende perldoc für?
Struppi.
test(%hash);
sub test
{
my $hash = shift;
for my $k (keys %$hash)
{
print "$k - @{$hash->{$k}} \n";
}
Ach, und eine for Schleife ist nicht optimal in der Situation:
my $hash = shift;
while (my ($key, $val) = each %$hash)
{
print "$key - @{$val} \n";
}
soll schneller sein.
Strupppi.
Hallo zusammen,
ich will einen hash von Arrays namens %hash in eine Subroutine übergeben
und dann dort die Daten auslesen ( also ich muss Sie nicht verändern ).
Nun weiss ich aber nicht wie das gehen soll !
Da ja alles irgendiwe in dem Array @_ gespeichert wird, weiss ich jetzt nicht
wie ich das mit einem %hash machen soll, der auch noch Arrays beinhaltet.
Bitte um Rat:
Bspcode der verdeutlichen soll was ich mahen will:test(%hash);
Das geht nur bedingt. wenn du nur ein Hash übergeben möchtest, dann kannst du das aus @_ erzeugen:
sub test
{
my %hash = @_;
for my $k (keys %hash)
{
print "$k - @{$hash{$k}} \n";
}}
Das funktioniert aber nicht mehr bei mehreren Parametern, dann musst du mit Referenzen arbeiten.
Struppi.
Hi,
wie funktioniert das denn mit Referenzen?
Kannst mir mal ein Beispiel posten ?
Danke.
cya
SI