perl lernen

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.559
Hi, alle zusammen

Ich bin ein großer fan der gallileo press bücher. Hab da schon "C von A bis Z", "Linux", "Shell Programmierung", "PHP und MySQL", "CSS3", sowie Teile aus dem Buch "Linux-Programmierung" gelesen. Die Bücher sind in der Regel sehr gut für Einsteiger zu verstehen (Außer Linux-Programmierung, welches Kenntnisse in C voraussetzt), aber trotzdem nicht zu anspruchslos geschrieben und haben einen großen Umfang, der den eines einfachen Tutorials oder HowTo bei weitem übersteigt. Nun würde ich gerne Perl lernen, um ein paar serverseitige Skripte zu erstellen. Besonders interessiert mich da der Umgang mit Datenbanken, da dies mit der reinen "bash" immer recht umständlich ist. Ich denke, mit Kentnissen in C und mit der bash bringe ich da ganz gute Voraussetzungen mit, um nicht vom Urschleim anfangen zu müssen. Ein schönes Buch zu diesem Thema habe ich bei gallileo press leider nicht gefunden. :( Hat jemand von euch einen guten Tip. Ich hätte auch nichts gegen eine Online Version (bis auf die Bücher über CSS und PHP/MySQL habe ich die anderen Bücher auch kostenlos online gelesen), wenn diese auch entsprechend umfangreich ist.

Vielen Dank
 
lordg2009 schrieb:
Nun würde ich gerne Perl lernen, um ein paar serverseitige Skripte zu erstellen. Besonders interessiert mich da der Umgang mit Datenbanken, da dies mit der reinen "bash" immer recht umständlich ist. Ich denke, mit Kentnissen in C und mit der bash bringe ich da ganz gute Voraussetzungen mit, um nicht vom Urschleim anfangen zu müssen. Ein schönes Buch zu diesem Thema habe ich bei gallileo press leider nicht gefunden. :( Hat jemand von euch einen guten Tip. Ich hätte auch nichts gegen eine Online Version (bis auf die Bücher über CSS und PHP/MySQL habe ich die anderen Bücher auch kostenlos online gelesen), wenn diese auch entsprechend umfangreich ist.
Fragen:
  • Sollen Programmierung und Anwendung unter Windows oder unter Unix/Linux erfolgen?
  • Was soll programmiert werden (Beispiele)?
Bücher, in denen eine Perl-Einführung und auch Datenbank- und Webprogrammierung vorgestellt werden:
Freie Bücher und Artikel über Perl:
 
Zuletzt bearbeitet:
Erst mal zu den Fragen:

Programmiert werden soll auf Linux.

Mir schwebt vor, folgendes auszuprobieren:
- Perl-Skripte, die eine firewall und routing mittels ip-tables realisieren
- konfiguration soll in einer Datenbank gespeichert und von den skripten abgerufen werden
- ein web frontend, soll zugriff auf die Datenbank und somit zu den konfigurationsmöglichkeiten bekommen
-> die Frage ist, ob man direkt auf die Datenbank zugreift oder die Daten per CGI an die perl skripte weitergibt, die dann ihrerseits die DB füllen
- letztendlich soll ein gateway mit routerähnlichen Fähigkeiten und einem konfortablen frontend, evtl. noch mit der Möglichkeit der traffic-Zählung und deren Konfiguration ausgestattet werden.

Es gibt für all das wahrscheinlich schon tools, aber es ist eine Art hobby :) Nicht zuletzt möchte ich es lernen, um es für eventuell neu auftretende Probleme nutzten zu können.

Die Links schaue ich mir jetzt an.
Ergänzung ()

Hab die links durchgeschaut und in den Rezensionen der Bücher wird häufig das Lama-Buch erwähnt. Habe danach gesucht und bin hierauf gestoßen, was hälst du davon?
Amazon: Einführung in Perl
 
lordg2009 schrieb:
- Perl-Skripte, die eine firewall und routing mittels ip-tables realisieren
- konfiguration soll in einer Datenbank gespeichert und von den skripten abgerufen werden
- ein web frontend, soll zugriff auf die Datenbank und somit zu den konfigurationsmöglichkeiten bekommen
-> die Frage ist, ob man direkt auf die Datenbank zugreift oder die Daten per CGI an die perl skripte weitergibt, die dann ihrerseits die DB füllen
- letztendlich soll ein gateway mit routerähnlichen Fähigkeiten und einem konfortablen frontend, evtl. noch mit der Möglichkeit der traffic-Zählung und deren Konfiguration ausgestattet werden.

Das sieht alles recht vertraut aus ;-) Mir Perl kein Problem. Möglicherweise gibt es für Perl schon Module auf CPAN, die die gewünschte Funktionalität fast bieten. Auch für das Themengebiet findet man jede Menge Literatur:
usw.

Die Stärke von Perl liegt aber in den regulären Ausdrücken. Ich empfehle unbedingt, reguläre Ausdrücke ganz besonders intensiv zu lernen und dann anzuwenden. Man braucht mindestens ein Jahr intensiver Beschäftigung - aber es lohnt sich.

Dieses Buch hier lohnt sich imho als Papierversion. Und das ist eines der sehr wenigen Bücher für IT wo ich das überhaupt sagen würde. Hier schon. Und überall hin mitnehmen und lernen ;-)

Zum Lama-Buch. Ist ganz o.k., ich habe es (in zwei verschiedenen Auflagen) da, habe aber nie wirklich drin gelesen. Das ist für Leute, die wirklich mit dem Urschleim anfangen (müssen).
 
Zuletzt bearbeitet:
na das klingt doch super. Dann werde ich mal schauen, ob ich das Lama Buch irgendwo (eBay vl.) für wenig Geld bekomme, und mich dann online weiter einlesen.

Zu den regulären Ausdrücken
Ich bin schon häufiger in die Verlegenheit gekommen mittels skripten die Textausgaben von irgendwelchen Programmen auszuwerten und weiterzuverarbeiten. Aus Mangel an Kenntnis der regulären Ausdrücken habe ich die Zeilen mit grep nach strings durchsucht und mit cut zurechtgeschnitten. Gehe ich Recht in der Annahme, dass hier die Stärken der regulären Ausdrücke liegen?
 
Ich sehe jetzt den Mehrwert Perl zu lernen nicht. Bash zu meistern, halte ich für sinnvoller. Ich würde aber nicht auf die Idee kommen damit direkt in der Datenbank zu fummeln. Dafür würde ich in der Web-App, die du eh planst, eine Rest-Schnittstelle einbauen und diese dann mit curl abfragen.

Regexps sind aber definitiv ein Muss, ganz besonders fürs Grepen. Da du scheinbar bisher ohne sie gegrept hast, weißt du noch gar nicht wie mächtig das Tool ist. Den Perl-Regex-Flavor unterstützt grep übrigens mit -P auch.
Das empfohlene Buch Mastering Regular Expressions unterstütze ich, aber keine Ahnung wie gut die deutsche Version ist.
Nur wenn du enorm viel mit Regexps arbeitest und tonnenweise Files damit verarbeitest, sehe ich ein, dass Perl da die sinnvollere Wahl ist.
 
Zuletzt bearbeitet:
Na ich dachte das perl vlt. eine bessere performance bringt, als die bash. Klar ist es auch eine skriptsprache, aber ich dachte es wäre trotzdem schneller!? Hab mal ein tool gebraucht, um eine textdatei zu verarbeiten, in der viele schleifendruchgänge notwendig waren. Habe das tool erst mit bash und dann in C geschrieben. Während die bash 4s gebraucht hat, hat es das C-Programm in nur 50ms geschafft. Gerade bei trafficzählung, deren auswertung ich aller 2min über einen cronjob realisiert habe macht das ja dann schon einen unterschied. Ich hatte gehofft, perl liegt von der performance dazwischen.

Außerdem studiere ich nur noch ein Jahr. Wenn ich dann arbeite habe ich weniger Zeit und kann solche Sachen nicht mehr so zügig lernen, deswegen wollte ich mir diese Fertigkeiten jetzt aneignen
 
Ja, wenn Performance so relevant ist, lohnt es sich doch Perl zu lernen. Wobei 4 Sekunden jetzt nicht die Welt sind, aber wenn das die Anforderung ist, dann eben Perl.
 
lordg2009 schrieb:
Hab mal ein tool gebraucht, um eine textdatei zu verarbeiten, in der viele schleifendruchgänge notwendig waren. Habe das tool erst mit bash und dann in C geschrieben. Während die bash 4s gebraucht hat, hat es das C-Programm in nur 50ms geschafft. Gerade bei trafficzählung, deren auswertung ich aller 2min über einen cronjob realisiert habe macht das ja dann schon einen unterschied. Ich hatte gehofft, perl liegt von der performance dazwischen.

Hier würde ich sogar annehmen, dass man das in Perl ungefähr genau so schnell hinbekommt wie in C. Die Stringverarbeitung in C ist suboptimal, in Perl aber häufig "optimal". Was genau hat das Tool gemacht und wie groß war die Datei?
Ergänzung ()

lordg2009 schrieb:
na das klingt doch super. Dann werde ich mal schauen, ob ich das Lama Buch irgendwo (eBay vl.) für wenig Geld bekomme, und mich dann online weiter einlesen.

Ist vielleicht mein persönlicher Geschmack, aber ich selber finde für Anfänger das Buch von Patay (oben) viel besser als das Lama-Buch. Das wäre eher mein Tipp (€3 bei Amazon).

Ich bin schon häufiger in die Verlegenheit gekommen mittels skripten die Textausgaben von irgendwelchen Programmen auszuwerten und weiterzuverarbeiten. Aus Mangel an Kenntnis der regulären Ausdrücken habe ich die Zeilen mit grep nach strings durchsucht und mit cut zurechtgeschnitten. Gehe ich Recht in der Annahme, dass hier die Stärken der regulären Ausdrücke liegen?

Richtig. Wenn Du das einmal richtig kannst, blickst Du nicht mehr zurück ;-) Zumal es bei einfachen Aufgaben häufig gar nicht nötig ist, ein Perl-Programm zu schreiben. Es reicht meist eine Perl-Kommandozeile ($> perl -e '<perl anweisungen>' | ls -1) zur Lösung aus. Am besten heute noch anfangen :lol:
 
Zuletzt bearbeitet:
Ich weiß nicht wie das bei Perl ist, aber zum weiterverarbeiten von Ausgaben nutze ich meist awk, da das bereits in seiner Grundstruktur zeilenbasiert ist und man genau das ja eh meistens braucht. Kannst du dir ja auch mal anschauen.
 
Zu dem kleinen Programm:

Die Datei war nicht groß. 2 Blöcke aus kommagetrennten strings. Das Programm sollte schauen, ob es zu einem bestimmten string im ersten Block einen gleichen string im zweiten block gibt. War das der Fall, sollten gewisse Zellen aus dem ersten und zweiten Block in eine neue Zeile zusammengefasst werden. Zu jeweils einer Zeile in Block 1 gab es keine bis mehrere passende Zeilen in Block 2. Realisiert habe ich die, indem ich für jede Zeile in Block 1 einmal den kompletten Block 2 durchlaufen habe und verglichen habe, also 2 verschachtelte Schleifen. Dabei musste natürlich jedesmal die Zeile zurechtgeschnitten werden (cut -c, -f5).

@Tumbleweed:
Was macht curl?
 
man curl schrieb:
curl is a tool to transfer data from or to a server, using one of the supported protocols (DICT, FILE, FTP, FTPS,
GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP). The
command is designed to work without user interaction.

curl offers a busload of useful tricks like proxy support, user authentication, FTP upload, HTTP post, SSL connections,
cookies, file transfer resume, Metalink, and more. As you will see below, the number of features will make your head spin!
Kurz - du kannst damit alle möglichen Requests abfeuern. Auch "komplexere" Sachen wie POST requests mit beispielsweise JSON-Payload kannst du machen. Dazu kannst du alle möglichen http header setzen und die Response nach deinen wünschen formatieren. Wenn dich z.B. nur der response code interessiert, kannst du ohne grep/cut/usw.-Gefrickel nur genau das ausgeben lassen. Eben perfekt um einfach Rest-Services nach configs abzufragen, egal ob der Service nun mit Plain-Text oder JSON antwortet.
 
Zuletzt bearbeitet:
Zurück
Oben