/blog/perl


substr() in Perl
[154367 mal gelesen]
foreach in Perl
[129203 mal gelesen]
Arrays in Perl - Besonderheiten
[125502 mal gelesen]
split() in Perl - Zeichenketten teilen
[113718 mal gelesen]
open() - Dateien öffnen in Perl
[109041 mal gelesen]
grep - Listen durchsuchen in Perl
[94792 mal gelesen]
chomp() in Perl
[93668 mal gelesen]
push in Perl
[90892 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[76015 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[59663 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


28.2.2007

Was man mit RegEx tun sollte und was nicht


Reguläre Ausdrücke sind eine große, mächtige Fähigkeit in Perl, alle möglichen Dinge mit Zeichenketten anzustellen. Suchen, ersetzen und löschen von Teilen eines Skalars lassen sich damit ziemlich komplex und sehr variabel umsetzen.
Diese Komplexität und Flexibilität hat aber einen Nachteil: Für manche Aufgabenstellungen sind RegEx eigentlich zu langsam, bzw. es gibt wesentlich schnellere Varianten ohne RegEx.

Suchen nach festen Inhalten eines Skalars

$t="test";
if ($t=~ /te/){ ... }


Weiterlesen...


Der Beitrag "Was man mit RegEx tun sollte und was nicht - Reguläre Ausdrücke " wurde 9992 mal gelesen.

Kompletten Beitrag lesen Nach oben



28.2.2007

chr() in Perl - Zeichen anhand seines ASCII-Codes ermitteln und ausgeben


Mit dem Befehl chr() kann man ein Zeichen anhand seines ASCII-Codes ausgeben. Allerdings sind zum großen Teil nur Zeichen > 32 darstellbar, da die darunter liegenden Zeichen meist als Steuerzeichen verwendet werden.

Syntax:
$zeichen = ord ($asciicode);


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

print "Content-type: text/html\n\n<html><body><h1>ASCII-Zeichentabelle</h1>";

my ($i,$j,$zeichenwert);
$zeichenwert=32;
print "<table>";

for ($i=0;$i<12;$i++){
print "<tr>";
for ($j=0;$j<8;$j++){
print "<td width=\"12%\">Code $zeichenwert: ";
print chr($zeichenwert)." ";
print "</td>";
$zeichenwert++;
}
print "</tr>";
}
print "</table></body></html>";


Weiterlesen...


Der Beitrag "chr() in Perl - Zeichen anhand seines ASCII-Codes ermitteln und ausgeben" wurde 15948 mal gelesen.

Kompletten Beitrag lesen Nach oben



27.2.2007

Bestimmte Dateien eines Ordners suchen - Suchen nach Dateiendungen - Beispiel aus der Praxis


Oft steht man vor dem Problem, daß man aus einem bestimmten Ordner alle Dateien eines bestimmten Typs suchen muß. Natürlich ging auch mir das schon öfters so, also hab ich mir eine kleine Funktion gestrickt, die mir alle Dateien zurückgibt.


#!/usr/bin/perl

# zum Testen der Funktion

use strict;

print join("\n",&alle_dateien("./","txt"));
exit;



sub alle_dateien{
# Parameter 1: Ordnername, relativ zum Script
# Parameter 2: Endung ohne .
# gibt alle Dateien als Array zurück (unsortiert)
# $endung = leer : Alle Dateien zurückgeben

my $ordner=shift;
my $endung=shift;
die "Kein Ordner angegeben" if ($ordner eq '');

if ($endung ne ''){
$endung=~ s/^\.//;
$endung='\.'.$endung;
}
local *in;

opendir (in,"$ordner") || die "Can not open directory $ordner: $!";

return grep {$_=~ /$endung$/ && !-d "$ordner/$_" } readdir(in);
}




Weiterlesen...


Der Beitrag "Bestimmte Dateien eines Ordners suchen - Aus der Praxis - Suchen nach Dateiendung " wurde 15914 mal gelesen.

Kompletten Beitrag lesen Nach oben



27.2.2007

crypt() in Perl - Zeichenketten verschlüsseln


Mit der Funktion crypt ist es in Perl möglich, Zeichenketten zu verschlüsseln.

Syntax:
$verschluesselt=crypt($original,$salt);

$salt stellt einen Skalar dar, der mindestens aus 2 Zeichen bestehen sollte. Mit diesem Skalar wird die Originalzeichenkette verschlüsselt.
Weiterlesen...


Der Beitrag "crypt() in Perl - Zeichenketten verschlüsseln" wurde 12585 mal gelesen.

Kompletten Beitrag lesen Nach oben



26.2.2007

Alternativen in regulären Ausdrücken - Oder-Suche mit RegEx


Manchmal möchte man in regulären Ausdrücken eine Oder-Suche durchführen. Dies wird ermöglicht durch den |-Operator im Suchteil des regulären Ausdruckes.

Beispiel:

my $t="test";
if ($t=~ /haus|test|maus/){print "gefunden $&";} else {print "nicht gefunden";}


Weiterlesen...


Der Beitrag "Alternativen in regulären Ausdrücken - Oder-Suche mit RegEx" wurde 10915 mal gelesen.

Kompletten Beitrag lesen Nach oben



23.2.2007

Arrays in Perl - Besonderheiten


Was ein Array in Perl ist sollte ja hinlänglich bekannt sein.

Es gibt allerdins auch noch einige Besonderheiten, auf die man hier hinweisen könnte:

Anzahl der Elemente eines Arrays
Will man wissen, wie viele Elemente in einem Array vorhanden sind, kann man dies ganz einfach mit:
Weiterlesen...


Der Beitrag "Arrays in Perl - Besonderheiten" wurde 125502 mal gelesen.

Kompletten Beitrag lesen Nach oben



21.2.2007

Dateien öffnen - Sicherheitsrisiko von Benutzereingaben


Dateien öffnen als Sicherheitsrisiko... tja, kann man denken, was soll da schon großartig passieren.

Aber Vorsicht, ein unsauberes Programm wie das Folgende kann es unliebsamen Zeitgenossen ermöglichen, Zugriff auf Ihren Server zu erlangen.


...
#Hier werden Parameter eingelesen, die Ihre Webseitenbesucher eingeben können, unter anderem auch den Parameter $datei
open (in,"<daten/$datei.txt");
print <in>;
close in;


Weiterlesen...


Der Beitrag "Dateien öffnen - Sicherheitsrisiko von Benutzereingaben" wurde 9732 mal gelesen.

Kompletten Beitrag lesen Nach oben



21.2.2007

chomp() in Perl


Im Gegensatz zu chop() entfernt chomp() nur dann das letzte Zeichen eines Skalars (Strings) oder Arrays (Liste), wenn dieses Zeichen gleich dem Zeichen ist, das in $/ gesetzt ist.Hört sich jetzt etwas verquert an, also im Klartext:
In $/ ist das Zeichen enthalten, das als INPUT_RECORD_SEPARATOR bekannt ist. Normalerweise ist das das \n bzw. der Zeilenumbruch. Und jetzt kommt man der Sache schon näher: Es wird, wenn vorhanden, jeder Zeilenumbruch am Ende eines Skalars oder eines Arrayelements gelöscht.

Beispiel:

open (in,"<test.txt");
@a=<in>;
close in;
chomp (@a);


Weiterlesen...


Der Beitrag "chomp() in Perl" wurde 93668 mal gelesen.

Kompletten Beitrag lesen Nach oben



21.2.2007

chop() in Perl - Letztes Zeichen eines Skalars oder Arrays entfernen


Der Befehl chop() entfernt das letzte Zeichen eines Skalars oder eines Arrays. Beispiel:

$t="Hansi";
$weg=chop($t);
print "Neu: $t\nAbgeschnitten: $weg";


Ausgabe:
Neu: Hans
Weiterlesen...


Der Beitrag "chop() in Perl - Letztes Zeichen eines Skalars entfernen" wurde 32028 mal gelesen.

Kompletten Beitrag lesen Nach oben



19.2.2007

Dateien öffnen mit Fehlerabfrage


Also, wie man Dateien mit Perl öffnet ist ja hoffentlich klar geworden, wenn nicht, kann man es hier nachlesen.Allerdings hatte die Geschichte einen kleinen Schönheitsfehler: Wenn es die Datei nicht gibt, wird in keinster Weise mit einer Fehlermeldung reagiert.
Manchmal ist es ja auch nicht so wichtig, daß eine Fehlermeldung erscheint, manchmal jedoch ist es "lebenswichtig" für die Funktion des Programmes.
Perl unterbricht nicht, wie andere Programmiersprachen, von sich aus die Ausführung des Scriptes, wenn eine Datei sich nicht öffnen läßt!

Weiterlesen...


Der Beitrag "Dateien öffnen mit Fehlerabfrage" wurde 10499 mal gelesen.

Kompletten Beitrag lesen Nach oben



19.2.2007

Feiertage eines beliebigen Jahres errechnen mit Perl


Hier mal etwas aus der Praxis:

Jeder kommt ja mal an den Punkt, an dem er einen Kalender verarbeiten muß. Natürlich wäre es wünschenswert, wenn nicht nur die Tage den Wochentagen zugewiesen werden, sondern wenn auch bekannt wäre, ob ein Tag ein Feiertag ist.
Ich habe da schon vor Jahren einmal ein Script geschrieben, das diese Arbeit erledigt. Aus aktuellem Anlaß hab ich es mal aktualisiert und umgeschrieben.

Hintergrund
Interessanterweise richten sich alle religiösen Feiertage nach Ostersonntag, so ist Pfingsten immer 49 Tage nach Ostersonntag, Rosenmontag ist immer 48 Tage vor Ostersonntag.
Weiterlesen...


Der Beitrag "Feiertage eines beliebigen Jahres errechnen mit Perl" wurde 9279 mal gelesen.

Kompletten Beitrag lesen Nach oben



19.2.2007

split() - Zeichenketten zerlegen in Perl


Der Befehl split() ist eine mächige Funktion, mit der man Skalare in Arrays zerlegen kann.

Syntax:
@array=split(/$trennungszeichen/,$skalar);


$t="Das hier ist ein Testtext";
@array=split(/ /,$t);
foreach (@array){print "$_\n";}


Weiterlesen...


Der Beitrag "split() in Perl - Zeichenketten teilen" wurde 113718 mal gelesen.

Kompletten Beitrag lesen Nach oben



19.2.2007

Nochmal Reverse - Diesmal für Zeichenketten


Reverse für Arrays kennt man ja schon - die Reihenfolge der Elemente wird von hinten nach vorne getauscht.
Reverse gibts aber auch für Skalare, oder Strings, wie manche Zeichenketten auch nennen.

Syntax:
$neu=reverse($alt);
Weiterlesen...


Der Beitrag "Nochmal Reverse - Diesmal für Zeichenketten" wurde 5315 mal gelesen.

Kompletten Beitrag lesen Nach oben



18.2.2007

Groß-Kleinschreibung in Regular Expression ändern


Folgendes Beispiel ist für mich mehr eine "Spielerei", aber immerhin interessant genug, sie zu beschreiben.

Also, die Aufgabenstellung wäre angenommener Weise:

Wandle
Weiterlesen...


Der Beitrag "Groß-Kleinschreibung in Regular Expression ändern" wurde 20475 mal gelesen.

Kompletten Beitrag lesen Nach oben



17.2.2007

Datei einlesen in Perl


Eine Textdatei kann man folgendermaßen komplett einlesen, also in einem Rutsch:

open (in,"<$dateiname");
@datei= <in>;
close in;


Der Inhalt der Datei wird im Array @datei eingelesen und steht dort zur Verfügung. Jede Textzeile, getrennt durch einen Zeilenumbruch (Enter, Eingabe, \n, oder wie man es nennen mag) ist ein Element.

Weiterlesen...


Der Beitrag "Eine Datei komplett einlesen mit Perl" wurde 35163 mal gelesen.

Kompletten Beitrag lesen Nach oben



16.2.2007

Gruppenbildung - Zeichenkolonnen mehrfach suchen mit Perl


Wie Sie hier gesehen haben, wirkte eine entsprechende Anweisung zur Mehrfachsuche immer nur auf das zu letzt stehende Zeichen, etwa
$t=~ /a{2,3}/;
sucht zwei oder dreimal das a. Was aber nun, wenn längere Zeichenketten wiederholt gesucht werden sollen?

Dafür gibt die Klammer ( und );
Weiterlesen...


Der Beitrag "Gruppenbildung in Perl" wurde 6646 mal gelesen.

Kompletten Beitrag lesen Nach oben



16.2.2007

Reguläre Ausdrücke - Klammerung und gespeicherte Werte



Wie Sie vorher gesehen haben, können Wiederholungen von Zeichen ermittelt werden, indem man die Zeichen in Klammern setzt.Diese Klammerung hat aber auch noch einen anderen Effekt: Die gefundenen Zeichen werden bestimmten Variablen zugewiesen! Diese Zuweisung ist eine sehr hilfreiche Einrichtung von Perl, wie Sie gleich sehen werden:

$t='<a href="test.htm">Test</a>';
$t=~ /(<a.*?>)(.*?)(<\/a>)/;
print "Linkcode: $1\nLinktext: $2\nEndocde: $3";


Weiterlesen...


Der Beitrag "Reguläre Ausdrücke - Klammerung und gespeicherte Werte" wurde 7271 mal gelesen.

Kompletten Beitrag lesen Nach oben



16.2.2007

Kuriose Reguläre Ausdrücke


Hier will ich in loser Reihenfolge die seltsamsten von gefundenen Regulären Ausdrücke vorstellen.

Split mit RegEx

$t="wert1 wert2";
($a,$b)=$t=~ /(.*) (.*)/;
print "a: $a, b: $b";



Weiterlesen...


Der Beitrag "Kuriose Reguläre Ausdrücke" wurde 7948 mal gelesen.

Kompletten Beitrag lesen Nach oben



15.2.2007

Gegen die Gier - Kürzeste Möglichkeit finden mit regulären Ausdrücken


Perl ist ja, wie Sie bekanntermaßen jetzt wissen, gierig. Es werden also immer die längsten möglichen Ergebnisse verwendet. Dies hat ja oftmals Vorteile, was aber, wenn man die kürzeste Variante braucht?
Natürlich geht das auch, wäre auch blöd wenn nicht...

Um die kürzeste Variante einer Entsprechung eines regulären Ausdruckes zu finden, wird das ?-Zeichen verwendet. Am Besten, ich bringe gleich ein Beispiel:

$t='<a href="test.htm">bla</a>';
$t=~ /<.*?>/;
print "$&\n";


Weiterlesen...


Der Beitrag "Reguläre Ausdrücke in Perl - Kürzeste Variante finden" wurde 7887 mal gelesen.

Kompletten Beitrag lesen Nach oben



15.2.2007

Wiederholungen finden mit regulären Ausdrücken


Eine besondere Flexibilität erhalten Reguläre Ausdrücke durch die Möglichkeit, nach mehrfachem Auftreten von Zeichen zu suchen.
Erreicht wird dies durch die Angabe der Anzahl in geschweiften Klammern { und }.
Die Angabe {2,5} bedeutet, daß das Zeichen 2-5 mal enthalten sein muß.

Beispiel
Weiterlesen...


Der Beitrag "Wiederholungen finden mit regulären Ausdrücken" wurde 8811 mal gelesen.

Kompletten Beitrag lesen Nach oben



15.2.2007

substr() in Perl


Der Befehl substr, der eine Abkürzung des englischen Wortes Substring ist, liefert Teile eine Strings, oder Skalars, wie es in Perl heißt, zurück.
Der Syntax ist
$teil=substr($original,startpos,anzahlzeichen,ersetzungszeichen);


$t="Hanswurst";
print substr($t,0,4);
print " ";
print substr($t,4,5);


Weiterlesen...


Der Beitrag "substr() in Perl" wurde 154367 mal gelesen.

Kompletten Beitrag lesen Nach oben



9.2.2007

Global, lokal oder wie - my () in Perl


Ohne lange Vorrede gleich ein Beispiel:

for ($i=0;$i<10;$i++){
print "$i ";
&changei;
}

sub changei{
$i=20;
}


Ausgabe:
0
Weiterlesen...


Der Beitrag "my in Perl" wurde 23082 mal gelesen.

Kompletten Beitrag lesen Nach oben



9.2.2007

print in Perl


Hier ist er also, der gute alte print-Befehl, den man aus vielen anderen Programmiersprachen kennt.
Und natürlich ist er auch in Perl dafür zuständig, etwas auszugeben.

Was und wohin etwas ausgeegeben wird, ist aber abhängig davon, wie print verwendet wird.

print "Ausgabe";
print "$ausgabe oder Eingabe";
print 'Ausgabe'. Ausgabe;
print out $ausgabe;
print out "$ausgabe $ausgabe";
print "die\ndas\njenes\n";


Weiterlesen...


Der Beitrag "print in Perl" wurde 58019 mal gelesen.

Kompletten Beitrag lesen Nach oben



6.2.2007

Den absoluten Pfad eines Scriptes auf dem Server feststellen


Zwischendurch mal wieder etwas fortgeschritteneres, ein Problem das sich mir heute stellte: Wie stelle ich den absoluten Pfad eines Scriptes auf dem Server fest?

Nachdem ich mal bei Gurgel nachgesehen habe und nichts brauchbares gefunden habe, hab ich mir mal all die Perl-Befehle durchgeduckt, die damit zu tun haben könnten. Aber auch da war nichts zu finden.
Fündig wurde ich schließlich bei den Umgebungsvariablen.
Weiterlesen...


Der Beitrag "Den absoluten Pfad eines Scriptes auf dem Server feststellen" wurde 14638 mal gelesen.

Kompletten Beitrag lesen Nach oben



6.2.2007

Reguläre Ausdrücke - Einfache Suche mit gemischten Zeichen


Wie die einfache Suche funktioniert haben wir ja nun gesehen. Auch die Funktion von Zeichenklassen sollte klar sein.

Hier noch ein Beispiel für die einfache Suche mit Zeichen und Zeichenklassen zusammen:


$t="Perl-Version 5.002";
if ($t=~ /\d\.\d/){print "wahr";}


Weiterlesen...


Der Beitrag "Reguläre Ausdrücke - Einfache Suche mit gemischten Zeichen" wurde 5605 mal gelesen.

Kompletten Beitrag lesen Nach oben



5.2.2007

Keys eines Hashes feststellen in Perl


Wie kann man am schnellsten alles Key's (Schlüssel) eines Hashes feststellen?

Ganz einfach, dafür gibts den keys()-Befehl.

Beispiel
Weiterlesen...


Der Beitrag "Keys eines Hashes feststellen in Perl" wurde 18523 mal gelesen.

Kompletten Beitrag lesen Nach oben



2.2.2007

Doppelte Einträge aus Array entfernen mit Perl


Ich hab mir da mal eine Funktion geschrieben, die aus einem Array schnell alle doppelten Werte herausfiltert.
Schnell bedeutet übrigens: Ich habe verschiedene Möglichkeiten auf Ihre Schnelligkeit hin getestet und diese war die Schnellste...

Code:

sub del_double{ #Parameter: @liste, die aussortiert werden soll
my %all;
grep {$all{$_}=0} @_;
return (keys %all);
}


Weiterlesen...


Der Beitrag "Doppelte Einträge aus Array entfernen in Perl" wurde 26205 mal gelesen.

Kompletten Beitrag lesen Nach oben



2.2.2007

Reguläre Ausdrücke - Suche nach Zeichen am Wortanfang und am Wortende


Nochmal zurück zur einfachen Suche.

Wie kann ich nach Zeichen Suchen, die am Wortanfang oder am Wortende stehen? Natürlich bieten reguläre Ausdrücke auch dafür eine Lösung. Die zeichen ^ und $ werden dafür genutzt.

Beispiel:
Weiterlesen...


Der Beitrag "Reguläre Ausdrücke - Suche nach Zeichen am Wortanfang und am Wortende" wurde 15373 mal gelesen.

Kompletten Beitrag lesen Nach oben



2.2.2007

Reguläre Ausdrücke - Einfaches Suchen die 2.


Die Grundlagen des Suchens wurde bereits hier vorgestellt.Es wurde vorgestellt, wie man Zeichenketten in Zeichenketten finden kann. Jedoch war das ganze noch ziemlich "unhandlich" und sehr umständlich.
Was zum Beispiel, wenn man zum Beispiel die Groß-Kleinschreibung ignorieren möchte, oder ganze Bereiche von bestimmten Zeichen suchen oder ausschließen möchte?

Also, weiter gehts mit dem "einfachen" Suchen

Weiterlesen...


Der Beitrag "Reguläre Ausdrücke die 2." wurde 10126 mal gelesen.

Kompletten Beitrag lesen Nach oben



2.2.2007

Reguläre Ausdrücke


Reguläre Ausdrücke sind das wahrscheinlich mächtigste Werkzeug in Perl. Mit diesen regulären Ausdrücken kann man Skalare relativ einfach nach bestimmten Zeichen oder Zeichenketten durchsuchen, man kann aber auch relativ einfach einzelne Zeichen oder Zeichenketten austauschen, löschen oder einfügen.
Wie sie vielleicht merken, sage ich immer relativ einfach. In Wahrheit braucht es einiges an Zeit und Übung, bis man sich an den Syntax gewöhnt hat.

Aber fangen wir einfach mal von vorne an:

Weiterlesen...


Der Beitrag "Reguläre Ausdrücke" wurde 7564 mal gelesen.

Kompletten Beitrag lesen Nach oben



1.2.2007

RegEx Spickzettel - Abkürzungen in regulären Ausdrücken



^ Von Beginn der Zeile , also ^abc findet abc, abcdefg, abc234, BESONDERHEIT: in []-Klammer bedeutet das Zeichen eine Negation!
$ Ende der Zeile, also abc$ findet abc, endeabc, 1234abc
. Jedes Zeichen
| Oder, also findet hans|franz hans oder franz
Weiterlesen...


Der Beitrag "RegEx Spickzettel - Abkürzungen in regulären Ausdrücken" wurde 9496 mal gelesen.

Kompletten Beitrag lesen Nach oben




SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
26.12.2024

Es ist
11:49:20 Uhr

Ihre IP:
3.147.86.104

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4428207


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Impressum