Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Ausführen.
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
C Tutorium – Semaphoren –
Imperative Programmierung -Entwicklungswerkzeuge
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Sockets in Java Richard Göbel. FH-Hof Kommunikation über das Internet - Grundlagen Ein Rechner wird im Internet über die so genannte IP- Adresse.
Java: Referenzen und Zeichenketten
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
1A: POSIX POSIX (Portable Operating System) ist ein Standard für UNIX-Systeme. Er dient dazu, Programme portabel unter UNIX und Derivaten zu tauschen und.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Dynamische Webseiten mit PHP
1 NetWork File System © April 2002, G. Hellberg Network File System Konfiguration und Einsatz.
WIRTSCHAFTSINFORMATIK Westfälische Wilhelms-Universität Münster WIRTSCHAFTS INFORMATIK TotalView Debugger Vorgestellt von Marco Dyballa mail:
Java-AG Ausnahmebehandlung Gerhard Gröger.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (7)
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Der VFP Debugger - Coverage und Profiling. © 1999 TMN-Systemberatung GmbH Der VFP Debugger n Neues Aussehen, eigene Task n Erweiterte Möglichkeiten n.
Error Handling unter Visual FoxPro. © 1999 TMN-Systemberatung GmbH ON ERROR n ON ERROR DO ERRHAND WITH error(), sys(16), message(), lineno(1) – Globales.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Learning By Doing TCP/IP Netzwerke mit TCP/IP Das Internet verwendet weitgehend das rund 30-jährige TCP/IP-Protokoll (TCP: Transmission Control Protocol,
JavaScript.
Patrick Schmerlaib. Scriptsprachen: sind Programmiersprachen Verzichten auf Sprachelemente Vorteile: schnelle Erstellung kleiner Programme Flexible Sprache.
PSI - Überblick und Szenarien
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Seminar Internet Technologien
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
CGI (Common Gateway Interface)
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Was mich ursprünglich von Perl überzeugt hat. Gegeben ist eine Textdatei, deren Größe unbekannt ist. Sie ist jedoch so klein, daß sie komplett in den Speicher.
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Interprozess- kommunikation (IPC)
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
PERL Eike Busse2 Gliederung 1.Einleitung 2.Geschichte 3.Eigenschaften/Merkmale von Perl 4.HTTP Server und Perl 5.Sicherheit 6.Perl programmieren.
C Tutorium – Debugging & Tracing – Knut Stolze. 2 Agenda Debugging & Debugger Tracing.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
DTrace Mathias Velten Sun Campus Ambassador
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung I/O Multiplexing Alexander Sczyrba
Netzwerk - Programmierung
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Concurrent Clients Alexander Sczyrba
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
Netzwerk - Programmierung
 Präsentation transkript:

Die Skriptsprache Perl (5) Wolfgang Friebel DESY Zeuthen

Anmerkungen zu Teil 4 select zum Umschalten des aktuellen Streams $oldfh=select(STDERR); $|=1; select($oldfh); oder use IO::Handle; STDERR->autoflush(1); n select zum Warten auf einen bereiten Stream ruft Äquivalent zum System call select n Lesen eines Zeichens (auch Return!) ohne Return use Term::ReadKey; ReadMode 4; # Turn off controls keys while(not defined($key=ReadKey(-1))) {#get key} print "Get key $key\n"; ReadMode 0;

7. Prozesse und Signale n Hier behandelte Themen nur eingeschränkt für NT n Prozesse mit `...` und system schon besprochen n Prozeßkontrolle u.a. mit exec, fork, wait, kill, alarm n Benutzung erfordert korrekte Signalbehandlung n Interprozeßkommunikation (IPC) wird unterstützt u typisch für Client Server -> CPAN Module n Prozeß+Systeminteraktion gefährden Sicherheit u Überwachung mit taint checks (perl -T)

Signalbehandlung Liste bekannter Signale sind keys von %SIG __WARN__ und __DIE__ von perl definiert n Meiste Signale führen zum Abbruch der Skript Verhindern durch Funktionsname in $SIG{signal} u Funktion wird bei Auftreten des Signals ausgeführt sleep n wird durch SIGALARM vorzeitig beendet alarm n sendet Signal ALARM nach n Sekunden kill SIGNAL, pids sendet Signal an Prozesse u kill 0 liefert wahr, wenn pid vorhanden, tut sonst nix

fork und exec n fork erzeugt Kopie des eigenen Prozesses u fortan laufen 2 Prozesse statt 1 u Unterscheidung Kind/Elternprozeß durch Returnwert u Kind gibt 0, Elternprozeß gibt pid der Kopie zurück n exec verwandelt einen Prozeß in anderen Prozeß u von exec gibt es keine Rückkehr n Elternprozeß muß auf Ende des Kindes warten u wird mit wait oder waitpid realisiert u bei Unterlassung entstehen Zombies!!

Interprozeßkommunikation n Sehr komplexe Materie mit vielen Fehlerquellen n Kommunikation über F gemeinsamen Speicher (shared memory) F bidirektionale Pipes F Sockets (netzwerkfähige Pipes) n Beispiele in Perl Cookbook n Aber: meist sofort nutzbare Module auf CPAN n Überwiegend eingesetzt: Sockets

Socket-Kommunikation n Hauptsächlich für Client/Server Aufgaben benutzt n RPC::PlServer von CPAN verwenden u Vorteile: remote procedure calls unterstützt u Läuft sowohl auf NT als auch unter UNIX u Sicherheitsmechanismen eingebaut n In Zeuthen installiert

Unsichere Daten n Über Userinput, Aufrufparameter und Output externer Programme kommen Daten ins Programm n Perl bietet Kontrolle über diese tainted data (-T): Keine Wirkung von befleckten Daten auf externe Prozesse n Insbesondere CGI-Programme sollten mit -T laufen n Setuid/gid Perl Scripts laufen immer im -T Modus n Keine Garantie für Sicherheit im perl Code

Behandlung unsicherer Daten $line = <>; #tainted `echo $line`; #insecure, gibt Fehler mit -T n Entfernung des tainted-Status durch Verwendung von Regex Substrings $1, $2,... Setzen der Variablen $ENV{PATH}, $ENV{ENV},... exec prog, args statt exec prog args (mit 2. Form args noch durch shell modifizierbar) u Verwandlung einer unsicheren Pipe in ein sicheres exec: open IP, -| or exec echo, $tainted; statt open IP, $tainted|;

File locking n Perl bietet zwei Mechanismen: flock und fcntl n flock funktioniert nicht mit NFS n fcntl ist nicht auf allen Systemen installiert n Systeme mit fcntl nicht immer kompatibel besser alternative Mechanismen benutzen Gefahr: einige Programme beachten Alternative nicht n Empfehlung: wann immer möglich vermeiden

8. Fehler in Programmen n Vermeidung von Fehlern durch perl -w #Bug in perl: -w ist optional use strict; u Benutzung von CPAN Modulen u Verwendung von Beispielen aus Literatur (s.Teil 1) Teste zur Laufzeit (Rückkehrcodes etc., $?, $! ) n Abfangen von Fehlern zur Laufzeit Kompilierfehler mit eval string Laufzeitfehler mit eval { block }

Die Funktion eval n Argument von eval wird als Perltext betrachtet eval string Syntaxcheck zur Laufzeit eval { block } Syntaxcheck beim Kompilieren n Rückgabewert wie bei Subroutinen n Bei Laufzeitfehler kein Programmabbruch u dann Rückgabewert Null und enthält die Fehlermeldung sonst ist Null n Ähnlich zu try und catch aus C++

Fehlersuche Einfachste Methode: print benutzen n komfortables Drucken der Werte von Variablen mit use Dumpvalue; my $dumper = new Dumpvalue; $dumper->dumpValue($variable); $dumper->dumpvars('main'); #alle Variablen Tracing möglich, wenn Debugging einkompiliert (- D ) n Benutzung eines Debuggers (perl -d, ddd, ptkdb)

Perl Debugger ddd und ptkdb sind grafische Frontents für perl -d n emacs bietet ebenfalls Debug Unterstützung n ddd ist in Zeuthen installiert, ptkdb nicht Zum Ausprobieren von perl Befehlen: perl -de 0 n Wichtigste Debuggerbefehle (meist 1 Zeichen) h (help) n (next) s (step) t (trace mode) b (setze breakpoint) c (cont after break) p expr (print) x expr (extended print) q (quit)

Perl Optimierung n Regel 1: Dont optimize n Erstellung eines Ausführungsprofils perl -d:Dprof perlscript erzeugt profil dprofpp gibt Profilinfos aus n Benchmarking von Codestücken use Benchmark; $t = timethis($count, CODE); Info in Objekt $t enthalten, wird auch ausgegeben

Hausaufgaben n Schreibe ein Programm, das nur 5s auf Userinput wartet n Experimentiere nicht mit fork und exec n Schreibe Hallo World als Client/Server Programm (PlServer) n Ändere teil4.pl so, daß es mit perl -T läuft n Schreibe ein Programm, das Division durch Null abfängt Erstelle mit dumpvars eine Liste aller Programmvariablen n Wie schnell ist stat auf einigen verschiedenen Rechnern