Thread Hash in Subroutinen (12 answers)
Opened by Andi123 at 2017-03-30 18:58

Gast Andi123
 2017-03-30 18:58
#186293 #186293
Ich möchte u.a. einen Hash an ein Sub übergeben. In der Sub will ich den Inhalt von %content nur lesen, nicht ändern.

$returnValue = doSub($key, \%content);

Weder mit

Code (perl): (dl )
1
2
3
4
5
sub doSub {
        my $key = shift;
        my %content = shift;
        ...
}


noch mit

Code (perl): (dl )
1
2
3
4
sub doSub {
        my ($key, %content) = @_;
        ...
}


komme ich an %content ran.

Ich habe einiges gelesen, aber nichts gefunden, wie ich in der Sub einfach %content auslesen kann, bspw. mit  while ( ($key, $value) = each (%content)) {....}

Einige im Netz gefundene Lösungen zeigten u.a., dass ich kein %_Hash mehr habe, sondern ein $_Array.
Oder ich sollte etwas mit %{ variablenname } probieren, was ich nicht verstanden habe :(

Unter Fragen zu Hashs finde ich den Hinweis
---

subroutine($a, $b, \%hash1, \%hash2, ...)

übergibt keinen Salat, sondern neben $a und $b einfach nur 2 Adressen. Und mit diesen 2 Adressen kriegst du auf der anderen Seite wieder deine Hashes.
---

Aber der Post zeigt mir leider nicht an, wie ich die Werte in der Sub "auffange". Ob mit shift oder @ oder oder oder :)

So gibt mir ein Dumper(%content) - nach obigem Tipp - nicht den Inhalt des Hashs an, sondern "$VAR1 = 'HASH(0x196f4a0)'; $VAR2 = undef;"

Das kann doch nicht so schwer sein?

PS Und warum verstehe ich das nicht? :D
Last edited: 2017-03-30 19:32:46 +0200 (CEST)

View full thread Hash in Subroutinen