ein Kapitel zurück                                           ein Kapitel weiter

Nun kommen wir zu Arrays und Zeichenketten oder besser Arrays von Zeichenketten. Was versteht ein C-Programmierer darunter?


char *texte[] = {"Hallo", "Wie gehts", "Guten Tag", "Guten Abend"};   


Also ein Zeiger auf Arrays. Nun hier geht's aber um Perl. Also wie sieht's nun in Perl aus................


@texte = ("Hallo", "Wie gehts", "Guten Tag", "Guten Abend");   


Die Ähnlichkeit lässt sich auch hier nicht leugnen. Man merkt Perl schon an des es in C Programmiert wurde. Nun wollen wir zu den Unterschieden von Arrays mit Zeichenketten und Array mit Zahlen kommen. Auch hier gilt für die Anzahl der Elemente in der Liste.....

#!/usr/bin/perl -w

@texte = ("Hallo", "Wie gehts", "Guten Tag", "Guten Abend");
$anzahl=@texte;
printf $anzahl . "\n";
print $#texte+1 . "\n";


Der Zugriff auf die einzelnen Zeichenkette erfolgt auch hier mit Hilfe des Indexes, einer for oder foreach-Schleife. Das mit der direkten Angabe des Arrays funktioniert bei Array von Zeichenketten nicht mehr...........

#!/usr/bin/perl -w

@texte = ("Hallo", "Wie gehts", "Guten Tag", "Guten Abend");
$counter=0;

foreach (@texte)
 {
   print $_ . "\t";                    #1.Variante
   print $texte[$counter] . "\n";      #2.Variante
   $_=$counter++;                      #Indexzaehler erhöhen
 }
print "@texte" , "\n";


Natürlich funktionieren auch die Funktionen pop, push, unshift, shift und slice. Hierzu  auch noch eine Demonstration........

#!/usr/bin/perl -w

@texte = ("Hallo", "Wie gehts", "Guten Tag", "Guten Abend");
@neue_texte = ("neuer Text", "nixsagender Text");
$counter=0;
$eingabe=0;

push(@texte, $neue_texte[0]);  #hängen "neuer Text" hinten an @texte an
shift @texte;                  #Wir entfernen das erste Element in @texte
unshift (@texte, $neue_texte[1]); #an den Anfang von Texte

print "Bitte geben sie irgendetwas ein : ";
chomp ($eingabe=<STDIN

splice (@texte, 2, 1, $eingabe);
#Wir entfernen "Guten Tag" und fügen dafür unsere neue Eingabe ein

foreach (@texte)
 {
    print $_ , "\t";
    $_=$counter++;
 }
 print "\n";


ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf