| HTML-Dateien selbst erstellen
|  | Dokumentation: CGI/Perl
|  |  | CGI und Perl: Perl Sprachelemente

# Mit Zahlen und Zeit arbeiten

Technisch/wissenschaftliche Berechnungen
Datum und Uhrzeit

## Technisch/wissenschaftliche Berechnungen

In Perl stehen für die wichtigsten höheren mathematischen Funktionen entsprechende Perl-Funktionen zur Verfügung.

#### Beispiel:

    #!/usr/bin/perl

    $Abswert = abs(-45683);
    print "Absolutwert von -45683 lautet: ", $Abswert, "\n";

    $Wurzel = sqrt(23876);
    print "Die Quadratwurzel von 23876 lautet: ", $Wurzel, "\n";

    $Ganzzahl = int(sqrt(3298476));
    print "Der Ganzzahlanteil der Quadratwurzel 3298476 von lautet: ", $Ganzzahl, "\n";

    $Exp = exp(39);
    print "Die Potenz 39 zur Basis e lautet: ", $Exp, "\n";

    $Log = log(23);
    print "Der natuerliche Logarithmus zur Basis e von 23 lautet: ", $Log, "\n";

    $Sinus = sin(1.2387);
    $Cosinus = cos(10.237);
    $ArkTangens = atan2(1.389,2.438);
    print "Der Sinus von 1.2387 lautet: ", $Sinus, "\n";
    print "Der Cosinus von 10.237 lautet: ", $Cosinus, "\n";
    print "Der Arkustangens von 1.389/2.438 lautet: ", $ArkTangens, "\n";

    @Hexwerte = (10,20,30,40,50,60,70,80,90,A0,B0,C0,D0,E0,F0);
    for(@Hexwerte)
     {
      $Dezimalwert = hex($_);
      print $_, " ist dezimal: ", $Dezimalwert, "\n";
     }

#### Erläuterung:

Mit der Funktion abs können Sie erzwingen, daß eine Zahl in jedem Fall positiv ist. Übergeben Sie der Funktion die Zahl, die behandelt werden soll. Die Funktion gibt den behandelten Wert zurück.
Mit sqrt können Sie die Quadratwurzel einer Zahl berechnen. Übergeben Sie der Funktion die Zahl, aus der die Wurzel gezogen werden soll. Die Funktion gibt das Ergebnis zurück.
Mit int erzwingen Sie von einer Bruchzahl den ganzzahligen Anteil, also bei 3.1415 etwa die Zahl 3. Übergeben Sie der Funktion die Zahl, aus der der Kommawert entfernt werden soll. Die Funktion gibt das Ergebnis zurück. Im obigen Beispiel zu dieser Funktion sehen Sie übrigens, wie man in Perl einer Funktion eine andere Funktion übergeben kann. Die Funktion berechnet in diesem Beispiel den Rückgabewert der Funktion für die Quadratwurzel.
Die Funktionen exp liefert die Konstante e in einer beliebigen Potenz zurück. Die Gewünschte Potenz übergeben Sie als Parameter. Die Funktion liefert das Ergebnis zurück.
Die Funktion log ermittelt den natürlichen Logarithmus einer Zahl zur Basis e. Übergeben Sie die gewünschte Zahl als Parameter. Die Funktion gibt das Ergebnis zurück.
Als geometrische Funktionen bietet Perl sin für Sinus, cos für Cosinus und atan2 für den Arkustangens an. Übergeben Sie diesen Funktionen die gewünschte Zahl. Arkustangens erwartet zwei Werte: von und bis. Die Funktionen geben das Ergebnis zurück.

Neben diesen Funktionen sind natürlich auch Berechnungen mit Berechnungsoperatoren möglich.

Zum Konvertieren von Hexadezimalwerten in Dezimalwerte können Sie die Funktion hex verwenden. Übergeben Sie der Funktion einen Hexadezimalwert (Ziffern 0 bis 9 und Buchstaben A bis F). Die Funktion gibt den Dezimalwert zurück.

## Datum und Uhrzeit

Perl bietet Funktionen zum Ermitteln von Datum und Uhrzeit an.

#### Beispiel:

    #!/usr/bin/perl

    $Jetztwert = time();
    $Jetztzeit = localtime($Jetztwert);
    &Deutschnamen;
    @Zeit = split(/ /,$Jetztzeit);
    @Uhrzeit = split(/:/,$Zeit[3]);

    print "Guten Tag!\n";
    print "Heute ist ",$Zeit[0],", der ",$Zeit[2],". ",$Zeit[1]," ",$Zeit[4],"\n";
    print "Es ist jetzt ",$Uhrzeit[0],":",$Uhrzeit[1]," Uhr\n";

    sub Deutschnamen
    {
     $Jetztzeit =~ s/Mon/Montag/;
     $Jetztzeit =~ s/Tue/Dienstag/;
     $Jetztzeit =~ s/Wed/Mittwoch/;
     $Jetztzeit =~ s/Thu/Donnerstag/;
     $Jetztzeit =~ s/Fri/Freitag/;
     $Jetztzeit =~ s/Sat/Samstag/;
     $Jetztzeit =~ s/Sun/Sonntag/;
     $Jetztzeit =~ s/Jan/Januar/;
     $Jetztzeit =~ s/Feb/Februar/;
     $Jetztzeit =~ s/Mar/März/;
     $Jetztzeit =~ s/Apr/April/;
     $Jetztzeit =~ s/May/Mai/;
     $Jetztzeit =~ s/Jun/Juni/;
     $Jetztzeit =~ s/Jul/Juli/;
     $Jetztzeit =~ s/Aug/August/;
     $Jetztzeit =~ s/Sep/September/;
     $Jetztzeit =~ s/Oct/Oktober/;
     $Jetztzeit =~ s/Nov/November/;
     $Jetztzeit =~ s/Dec/Dezember/;
    }

#### Erläuterung:

Das obige Beispiel ermittelt Datum und Uhrzeit und gibt das Ergebnis ordentlich formatiert und deutschsprachig aus.

Mit dem Aufruf der Perl-Funktion time wird die aktuelle Zeit ermittelt. Die Funktion gibt, wie unter Unix und C üblich, die Anzahl der Millisekunden zurück, die seit dem 1.1.1970 vergangen sind. Das ist eine ziemlich hohe Zahl, die nichts weiter ausssagt, aber sehr exakt ist. Im obigen Beispiel wird diese Zahl in dem Skalar $Jetztwert gespeichert. Sie ist Grundlage für den Aufruf der Funktion localtime. Diese Funktion erwartet als Parameter eine Zahl, die sie als Anzahl Millisekunden seit 1.1.1970 interpretiert. Die Funktion erzeugt daraus eine Zeichenkette, die Datum und Uhrzeit im internationalen Format enthält, z.B. Fri Jun 13 20:29:11 1997. Diese Zeichenkette gibt die Funktion zurück. Im obigben Beispiel wird dieser Rückgabewert in $Jetztzeit gespeichert.
Im Beispiel wird als nächstes ein Unterprogramm mit Namen Deutschnamen aufgerufen, das in der Zeichenkette von $Jetztzeit alle denkbaren internationalen Tages- und Monatskürzel durch die üblichen deutschsprachigen Namen ersetzt.
Die Datums- und Zeitelemente in $Jetztzeit sind durch Leerzeichen voneinander getrennt. Diese Eigenschaft macht sich die Anweisung @Zeit = split(/ /,$Jetztzeit); im Beispiel zu eigen. Anschließend sind die einzelnen Elemente wie Tag, Monat, Jahr usw. einzeln als Elemente dieser Liste ansprechbar. Ein Element dieser Liste, ansprechbar über $Zeit[3], stellt die Uhrzeit dar. Die Uhrzeit besteht aus Stunden, Minuten und Sekunden, getrennt durch Doppelpunkt. Auch diese Zeichenkette wird im Beispiel wieder in ihre Bestandteile zerlegt, nämlich mit der Anweisung @Uhrzeit = split(/:/,$Zeit[3]);.
Danach sind alle Elemente einzeln ansprechbar und können - wie im Beispiel - mit der print-Funktion nach Belieben ausgegeben werden.

| Blättern: |
Zeichenketten und Listen manipulieren |  |  | CGI-typische Anweisungen in Perl

| HTML-Dateien selbst erstellen
|  | Dokumentation: CGI/Perl
|  |  | CGI und Perl: Perl Sprachelemente