Mac Perl Primer

Das zweite Programm: Farbpsychologie

Wir wählen den Menüpunkt "New" im Menü "File". Wir geben folgendes Programm ein:

$color = MacPerl::Pick( "Deine Lieblingsfarbe:", "Orange", "Braun", "Schwarz");

if( $color eq "Schwarz") {
	  $user = "Designer"; 
}
if ( $color eq "Braun") {
	  $user = "Künstler";  
}
if ( $color eq "Orange") {
	  $user = "Techno-Fan";  
}
if(  ! $color ) {
	  $user = "Spielverderber"; 
}

MacPerl::Answer( "Du bist wohl ein $user");

Wir lassen das Programm laufen. (Script -> Run "untitled")

Dieses Programm ist schon etwas erklärungsbedürftiger. Wer schon in C programmiert hat, dem wird das meiste klar sein. Alle anderen werden von den verschiedenen Klammern, Dollarzeichen, doppelten Doppelpunkten und eigenartigen Wörtern etwas abgeschreckt sein. Ja, leider muß man sich diesen kryptischen Zeichen auseinandersetzen. Aber es ist alles halb so schlimm:

Das Dollarzeichen zeigt an, daß es sich beim Wort um eine Variable handelt. Diese Variablen(auch Platzhalter genannt) bilden das Gedächtnis von Perl, eine Variable kann sich jeweils einen bestimmten Wert merken, man sagt auch, der Variablen wird ein bestimmter Wert zugewiesen. Das passiert mit dem Gleichheitszeichen. Die Zeile
$user = "Künstler"; bedeutet also, das die Variable mit Namen $user den Wert "Künstler" erhält.

Der doppelte Doppelpunkt ist ein Zeichen dafür, das wir etwas aus einer Bibliothek bzw. einem Modul benutzen wollen. MacPerl::Answer ist also die Funktion Answer aus der Bibliothek MacPerl

Das Wort eq ist der Test auf Gleichheit (Equivalence-Operator).

$color eq "Schwarz"
testet also, ob der Inhalt in der Variable $color der Text "Schwarz" steht.

Die if Anweisung (engl: Statement) bewirkt, daß die Anweisungen innerhalb des geschweiften Klammerpaares nur ausgeführt wird, falls der Test in dem runden Klammerpaar wahr ist. Also: wenn die Variable $color den Wert "Schwarz" enthält, dann weise der Variablen $user den Wert "Künstler" zu.

Perl ist es übrigens egal, mit wie vielen zusätzlichen Leerzeichen, Tabs oder Zeilenumbrüchen das Programm gepflastert ist, folgende Anweisungen sind also gleichwertig:

if($color eq "Schwarz"){$user="Designer";}

if     ( $color eq "Schwarz"    )
       { $user  =  "Designer" ; }

        if
         ( 
      $color 
        eq 
     "Schwarz"    
         )
         { 
       $user  
         =  
     "Designer"
         ; 
         }

Wichtig ist allerdings den Variablenname gleich hinter dem Dollar zu setzen, und innerhalb der Anführungsstriche keine zusätzlichen Leerzeichen einzusetzen. "Schwarz" und " Schwarz " sind für Perl also zwei verschiedene Dinge.

In der letzten Zeile sehen wir eine etwas ganz unscheinbares, was in vielen anderen Programmiersprachen, zum Beispiel im ach so tollen Java aber nicht vorhanden ist:

"Du bist wohl ein $user"

Das $user wird im Moment des Ausführung durch den dann aktuellen Wert von $user ersetzt, also z.B. Künstler. In der Perl Dokumentation heißt dieses "Interpolation".

Nachdem wir dieses Programm halbwegs verstanden haben, zeigen wir es den Arbeitkollegen, nicht ohne auf die implizite Variablen-Interpolation hinzuweisen, und sie werden vor Ehrfurcht in Boden versinken.

<- vorherige Lektion

>- nächste Lektion


home - contact - q-zone - dev-zone