Homepage Inspire-world | Forum
CGI/Perl Workshops Strings manipulieren

 Inhaltsverzeichnis/Workshops Übersichtsseite/Strings manipulieren
Hier in dem Kapitel soll es darum gehen Daten in eine andere Ausgabeform umzuwandeln. Grundlage soll eine Zeitangabe sein die aus Uhrzeit und Datum besteht. Ziel soll sein den Datum 05/13/2002 einzeln darzustellen und in ein Deutsches Datumsformat 13. 05. 2002 umzuwandeln und auszugeben.

1. Zunächst einmal ein kleines Beispielscript

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

$datum = "16:22:45 05/13/2002";
@datum = split(/ /, "$datum");
$datumsplit = "$datum[1]";
@datumsplit = split("\/", "$datum[1]");
@gedreht = ("$datumsplit[1]","$datumsplit[0]","$datumsplit[2]");


$umgewandelt = join('. ',@gedreht);

print "Content-type: text/html\n\n";
print "Altesdatum: $datum";


print "Umgewandelt: $umgewandelt";
Was macht nun dieses Script?

Nun zunächst ist hier der String mit der Zeit und Datumsangabe $datum = "16:22:45 05/13/2002";
Diese gilt es nun als erstes in seine Bestandteile zu zerlegen. Das Problem ist hier das man dies splitten in verschiedene Arbeitsschritte teilen muss. Denn der String 16:22:45 05/13/2002 ist aus verschiedenen Zeichen und Zeichenkombinationen zusammengesetzt.

Die erste Stufe @datum = split(/ /, "$datum"); trennt den String bei dem Leerzeichen was Zeit und Datum trennt.

Mit $datumsplit = "$datum[1]"; können wir nun auf das Element 1 des Arrays @datum zugreifen. $datum[1]deshalb weil Perl ja bei 0 anfängt zu zählen, $datum[0] wäre hier demzufolge die Zeit 16:22:45.

Nun geht das selbe Spiel mit dem splitten weiter, diesmal wird aber der nun einzelngestellte String 05/13/2002 gesplittet. Da dieser als Trennung der Zeichen einen Slash besitzt wird dieser in dem Code @datumsplit = split("\/", "$datum[1]"); angegeben als Trennzeichen.

Dies bewirkt nun das die Daten 05/13/2002 so einzeln vorliegen 05 13 2002.

Diese Daten werden nun dem Array @gedreht zugeordnet @gedreht = ("$datumsplit[1]","$datumsplit[0]","$datumsplit[2]"); und zwar in der Reihenfolge wie die Ausgabe später erscheinen soll.

Nun folgt der letzte Schritt der Aktion, das zusammenfassen zu einem neuen String mit der join Funktion. Dies geschieht durch die Zeile $umgewandelt = join('. ',@gedreht);.

Wie funktioniert das?
$umgewandelt ist die neue Stringvariable.
'. ' ist die Definition wie die einzelnen Arrayteile verbunden werden sollen.
@gedreht Das Array welches verbunden werden soll.

Hier nun wird das ganze mal zum Vergleich ausgegeben.
print "Content-type: text/html\n\n";
print "Altesdatum: $datum";


print "Umgewandelt: $umgewandelt";



 Zum Inhaltsverzeichnis/Workshops Übersichtsseite/Strings manipulieren
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!