|
Technisch/wissenschaftliche Berechnungen
Datum und Uhrzeit
#!/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"; } |
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.
#!/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/; } |
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 |
© 1997 Stefan Münz, s.muenz@euromail.com