ein Kapitel zurück                                           ein Kapitel weiter

Die Funktion split ist ähnlich der Funktion strtok in C. Bei dieser Funktion können wir einen Text in seinen einzelnen Bestandteilen zerlegen. Hierzu benötigen wir nur ein Trennzeichen.........

split( TRENNZEICHEN , TEXT);


Wollen wir uns die Funktion split mal in der Praxis ansehen. Wir geben ein paar Wörter in der Kommandozeile ein und zerlegen diese dann in einzelne Arrays.......

#!/usr/bin/perl -w

@text=(0);
$input=0;
$counter=0;

print "Bitte machen sie eine Eingabe : ";
chomp ($input=<STDIN>);

@text = split(" ", $input);
#Zerlegt alle Wörter ab einem Leerzeichen
#und übergibt diese Wort an @text

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


Viele werden jetzt vermutet haben das die Textzerlegung in einer Schleife stattfindet. Nun das nimmt uns auch hier wieder eine Funktion ab. Natürlich könne sie auch andere Token (engl. f. Zeichen) zur Zerlegung eines Textes in einzelnen Arrays verwenden. Im Prinzip jedes darstellbare Zeichen.

Tja und join ist so etwas wie das Gegenstück mit dieser Funktion können sie aus Listen wieder Texte machen.

#!/usr/bin/perl -w

@text=("Name", "Alter", "Wohnort", "Hobbys");
$text_ausgabe=0;

#Übergibt die einzelnen Elemente von @text an $text_ausgabe
$text_ausgabe= join("*", @text);

print $text_ausgabe , "\n";


Somit haben wir eine alternative für........


print @text;


...da dies ja nicht mit Zeichenketten von Arrays funktioniert. Also.......

print join (" ",@text);   


Das zweite Argument, sie werden es bereits festgestellt haben stellt das Trennzeichen da was zwischen 2 Elementen stehen soll.

Wollen wir uns doch mal ein etwas nützlicheres Programm mit unserem Wissen erstellen. Wir wollen Hilfe von rand (Pseudo-Zufallsgenerator) join und map ein 8 stelliges Passwort erstellen lassen. Sie können das Beispiel in ähnlicher Form ja später als CGI-Skript in Ihre Homepage einbauen...

#!/usr/bin/perl -w

@zeichen = ('A'..'Z', 'a' .. 'z', 0 .. 9);
$passwort = join("", @zeichen[map{rand @zeichen}(1 .. 8)]);

print "Ihr Passwort : $passwort\n";


ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf