ein Kapitel zurück                                           ein Kapitel weiter

Anonyme Strukturen sind Referenzen die auf einem Speicherbereich verweisen, die keiner Variablen gebunden sind. Da sie keinen Namen haben heißen diese nunmal anonyme Strukturen.

Anonyme Listen
Anonyme Listen werden mit Hilfe von eckigen Klammern erzeugt....

$ref = ["Hallo", "Welt", "in", "Perl"];

Wir haben hier eine Liste mit 4 Elementen ohne Namen angelegt. Zugreifen können wir nun auf die 4 Elementen mit unserem Refernzen $ref folgendermaßen......

#!/usr/bin/perl -w

$ref = ["Hallo", "Welt", "in", "Perl"];

print $ref->[0] , " ";  #Hallo
print $ref->[1] , " ";  #Welt
$ref->[2] = "mit";      #in -> mit
print $ref->[2] , " ";  #mit
print $ref->[3] , "\n"; #Perl

#...oder alles auf einmal...
print "@{$ref}" , "\n";

Natürlich können sie an die anonyme Liste weitere Elemente anfügen........

#!/usr/bin/perl -w

$ref = ["Hallo", "Welt", "in", "Perl"];
@array = ("Perl", "ist", "toll");

#...oder alles auf einmal...

print "@{$ref}" , "\n";
#List @array hinten hin
push( @{$ref}, @array );

print "@{$ref}" , "\n";


Anonyme Hashes
Mit anonymen Hashes funktioniert das ganze genauso wie schon bei anonymen Listen.....

$ref = { name => 'Argon Miller' , telefon => '0800-200200' };  

Zugreifen auf die einzelnen Wert können sie mit Hilfe des Schlüssels und dem Referenzen $ref.......


#!/usr/bin/perl -w

$ref = { name => 'Argon Miller' , telefon => '0800-200200' };

print $ref->{'name'} , "\n";
print $ref->{'telefon'} , "\n";

Natürlich können sie auch die Inhalte ändern und neue hinzufügen.......

#!/usr/bin/perl -w

$ref = { name => 'Argon Miller' , telefon => '0800-200200' };

print $ref->{'name'} , "\n";
print $ref->{'telefon'} , "\n\n";

$ref->{'name'} = "Argon Mueller";

$ref->{'gehalt'} = "5400 Euro";

print $ref->{'name'} , "\n";
print $ref->{'telefon'} , "\n";
print $ref->{'gehalt'} , "\n";

Die Ausgabe mit einer foreach-Schleife ist natürlich dieser hier gezeigten vorzuziehen....

#!/usr/bin/perl -w

$ref = { name => 'Argon Miller' , telefon => '0800-200200' };

$ref->{'name'} = "Argon Mueller";

$ref->{'gehalt'} = "5400 Euro";

foreach (keys %{$ref} ){
 print $_ , " : " , $ref->{$_} , "\n";
 }


Anonyme Subroutinen
Auch die Subroutinen können anonym sein.........

#!/usr/bin/perl -w

$sub1 = sub { return my $ergebnis = $_[0] + $_[1] };
$sub2 = sub { print "Ich bin die Subfunktion2\n" };

print &{$sub1}(20,25) , "\n";
print &{$sub2} , "\n";

Solche Möglichkeiten werden sie später in Perl/Tk noch kennenlernen. Das klassische Beispiel stellt auch hier wieder einen Dispatcher da...

$code_ende = sub { print "bye\n"; exit (0); };

%dispatch = { 'input' => sub { print "Eingabe : " };
              'output'=> sub { print "Sie gaben ein : " } ;
              'ende'  => $code_ende;
            }

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf