Perl-Tricks

Linux Perl-Tricks

Dieses Dokument enthält einige Tipps und Tricks, die bei der Programmierung meiner CGI-Scripte (Perl) "abgefallen" sind. Es soll ein dynamisches Dokument sein, welches ich ständig (wenn ich etwas Neues ausprobiert habe) erweitern werde.

HTML-Tags filtern:
Immer dann, wenn Homepage-Besucher in Gästebüchern oder Diskussionsforen riesige Bilder integrieren oder durch falsch benutzte HTML-Tags das Design entstellen, ist es notwendig, diese Tags herauszufiltern. Für einen einfachen String sieht dies wie folgt aus:

$string =~ s/<([^>]|\n)*>//g;

Aktuelles Datum aufbereiten:
Zur Aufbereitung des aktuellen Datums ist leider etwas Schreibarbeit notwendig. Das Jahr wird nur zweistellig geführt, die Monate fangen bei "0" an und alle Werte liegen nur in einstelliger Form vor. Mit den folgenden Zeilen wird das Datum entsprechend aufbereitet:

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$mon+=1;
if ($sec < 10) { $sec = "0$sec"; }
if ($min < 10) { $min = "0$min"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($mon < 10) { $mon = "0$mon"; }
if ($mday < 10) { $mday = "0$mday"; }
$year = $year+1900;
$date = "$year-$mon-$mday $hour:$min:$sec";

Header-Weiterleitung:
Das folgende Perlscript leitet eine Anfrage per Header-Weiterleitung an eine andere URL weiter:

#!/usr/bin/perl
print "Location: http://www.linux-fuer-alle.de/\n\n";

Formulardaten entgegennehmen:
Die folgenden Perl-Fragmente lesen Formulardaten, die entweder per POST oder per GET übermittelt wurden, ein und bereiten diese auf. Da Leerzeichen und Sonderzeichen (inkl. Umlaute) beim Absenden codiert werden, müssen diese entsprechend decodiert werden.

$PAR=();

# POST-Eingaben lesen
read(STDIN, $Parameter, $ENV{'CONTENT_LENGTH'});

# GET-Eingaben lesen
# $Parameter = $ENV{'QUERY_STRING'};

# einzelne Parameter im Array speichern
@PARAMETER = split(/\&/,$Parameter);

foreach $param (@PARAMETER)                  # für alle Array-Einträge
{ ($key, $data) = split(/\=/,$param);        # Variable und Inhalt trennen
  $data =~ s/\+/ /go;                        # Leerzeichen decodieren
  $data =~ s/\%(..)/pack("c",hex($1))/ge;    # hexcodierte Sonderzeichen decodieren
  $PAR{$key}=$data;                          # Inhalt in Hash speichern
}

Artikelbewertung: 
No votes yet
War dieser Artikel hilfreich?