Thread Allg. Frage zu Referenzen (18 answers)
Opened by toppsino at 2008-04-12 17:15

GwenDragon
 2008-04-12 17:25
#108269 #108269
User since
2005-01-17
14787 Artikel
Admin1
[Homepage]
user image
Stell dir vor, du hast eine Funktion, an die du einen Hash, ein Array und mehrere Zeichenketten übergeben willst.

Beispiel wie es meist falsch gemacht wird:
Code: (dl )
1
2
3
4
5
6
my $UNDMEHR = 'Und mehr!';
my $NOCHWAS = 'Noch was? Nee!?';
my @ARRAY = (1, 2, 3, 4);
my %HASH = (Erste => 1, Zweite = 2, Dritte => 3, Letzte =>999);

meine_funktion(@ARRAY, %HASH, $NOCHWAS, $UNDMEHR);

Ohne Referenzen geht das jedenfalls beim Array und dem Hash nicht.
Also besser so:
Code: (dl )
1
2
3
4
5
6
my $UNDMEHR = 'Und mehr!';
my $NOCHWAS = 'Noch was? Nee!?';
my @ARRAY = (1, 2, 3, 4);
my %HASH = (Erste => 1, Zweite = 2, Dritte => 3, Letzte =>999);

meine_funktion(\@ARRAY, \%HASH, $NOCHWAS, $UNDMEHR);


In der Funktion kannst du so zugreifen:
Code: (dl )
1
2
3
4
5
6
7
8
9
sub meine_funktion { # \@ARRAY, \%HASH, $NOCHWAS, $UNDMEHR
my $array_ref = shift;
my $hash_ref = shift;
my $string1 = shift;
my $string2 = shift;

print 'Hashwert Zweite ist dann ', $hash_ref->{Zweite};
print 'Arraywert 3 ist dann ', $array_ref->[3-1];
}


Sicherlich lässt es sich viel besser noch schreiben, aber das soll ja ein Anfängerbeispiel sein.

View full thread Allg. Frage zu Referenzen