1 / 12

Programmierungssprache PERL

Programmierungssprache PERL. Prof.-Dr. Peter Brezany Institut für Scientific Computing Universität Wien, Nordbergstraße 15/C/315 1090 Wien Tel. : 01/4277 38825 E-mail : brezany@par.univie.ac.at Sprechstunde: Dienstag, 13.00-14.00. #!/usr/bin/perl print “Hallo Welt! <br>“;

Download Presentation

Programmierungssprache PERL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmierungssprache PERL Prof.-Dr. Peter Brezany Institut für Scientific Computing Universität Wien, Nordbergstraße 15/C/315 1090 Wien Tel. : 01/4277 38825 E-mail : brezany@par.univie.ac.at Sprechstunde: Dienstag, 13.00-14.00

  2. #!/usr/bin/perl print “Hallo Welt! \n“; Perl (Practical Extraction and Report Language) wurde 1986 von Larry Wall entwickelt. "Easy things should be easy, and hard things should be possible." - Larry Wall http://www.perlunity.de/perl/tutorial/perl_start.shtml http://perlwelt.horus.at/ Interpretierte Sprachen: Perl, PHP, Basic,… Kompilierte Sprachen: C, C++, Pascal,… test.pl -> perl Interpreter -> laufendes Programm test.c -> C Compiler -> test.exe -> laufendes Progr. Perl

  3. Reguläre Ausdrücke in Perl >= Reguläre Ausdrücke in Automatentheorie In Perl wird Mustererkennung für 3 Dinge verwendet: Beim Matching mit =~ m/MUSTER/ zur Suche nach einem Muster, bei der Textersetzung mit =~ s/MUSTER/TEXT/ zum Suchen nach einem Muster und Ersetzen durch einen Text und im Befehl split(MUSTER,STRING) zum Zerlegen eines Textes in mehrere Teile. PerlMustererkennung und Reguläre Ausdrücke

  4. $satz = “3Engel für Charlie!“; $satz =~ m/a/; -> true matcht erstes kleines a im String $satz =~ m/\d/; -> true matcht erste Ziffer (3) im String (digit) $satz =~ m/\D/; -> true matcht erste Nicht-Ziffer (Leerzeichen nach 3 und vor E) Zeichen-Klassen: z.B. [01], [äöü], [a-z], [^0-9] $satz =~ m/f[äöü]r/; -> true matcht: färoderföroderfür im String matcht nicht: füür oder fäöür oder fr oder FÜR Perl: pattern matching and regular expressions

  5. $satz = “Nur 3 Engel für Charlie?“; $satz =~ m/\?$/; -> true matcht: ein Fragezeichen im String, welches am String-Ende stehen muss Zeichen, wie ^ $ ? . + * | [ ) \ / haben eine spezielle Bedeutung in Muster und müssen, wenn sie als normales Zeichen verwendet werden, mit einem Backslash \ vor dem Zeichen markiert werden. $satz =~ m/^\?/; -> false matcht: ein Fragezeichen, welches am Stringanfang stehen muss Perl: pattern matching and regular expressions

  6. $satz = “3 Engel für Charlie???“; $satz =~ m/Engeln?/; -> true Das Fragezeichen bedeutet, dass der Buchstabe vor dem Fragezeichen einmal oder keinmal vorkommen darf. $satz =~ m/Ch.rlie/; -> true Der Punkt (Joker) kann für genau ein beliebiges Zeichen stehen. matcht: Charlie, ChArlie, Ch1rlie, Ch%rlie, Ch rlie matcht nicht: Chrlie, Chaarlie, Stefan Perl: pattern matching and regular expressions

  7. $satz = “3 Engel für Charlie???“; $satz =~ m/Charlie\?+/; -> true matcht: Charlie?, Charlie????, 1-n Fragezeichen $satz =~ m/Charlie\?*/; -> true matcht: Charlie auch ohne ?, also 0-n Fragezeichen $satz =~ m/Charlie\?{2,4}$/; -> true matcht: Charlie mit 2,3,oder 4 Fragezeichen $satz =~ m/ChArLiE/i; -> true Das i macht das Muster case-insesitive, also unempfindlich gegenüber Groß- oder Kleinschreibung. Perl: pattern matching and regular expressions

  8. Text ersetzen: $satz = “Engel 1, Engel 2 und Engel 3 für Charlie!“; $satz =~ s/Engel/Teufel/; $satz = “Teufel 1, Engel 2 und Engel 3 für Charlie!“; $satz =~ s/Engel/Teufel/g; $satz = “Teufel 1, Teufel 2 und Teufel 3 für Charlie!“; print ( $satz =~ s/Engel/Teufel/g ) -> 2 bzw. 3 $satz =~ s/Engel/Teufel/i; -> case-insesitive Perl: pattern matching and regular expressions

  9. Muster wieder verwenden: $satz = “Teufel 1, Teufel 2 und Teufel 3 für Charlie!“; $satz =~ s/(\d)/v$1.0/g; -> 3 ( $1 ist auch 3) $satz = “Teufelv1.0, Teufel v2.0 und Teufel v3.0 für Charlie!“; Mit runden Klammern kann man Teile des Strings abspeichern. Der gematchte Text des Musters im ersten Klammernpaar wird in $1, der im Zweiten in $2 gespeichert… Perl: pattern matching and regular expressions

  10. Muster wieder verwenden: $satz = “Engel B“; $satz =~ s/^(.)(.*)(.)$/$3$2$1/; $satz = “Bengel E“; Der Ausdruck vertauscht den ersten und den letzten Buchstaben. ^ und $ erkennen den Anfang und das Ende des Strings; (.) speichert den ersten Buchstaben; (.*) speichert alles bis zum letzten Buchstaben; (.) speichert den letzten Buchstaben; Danach wird ersetzt, indem $1 und $3 vertauscht werden. Perl: pattern matching and regular expressions

  11. Beispiel: korrekte E-Mail Adresse? if ( $email =~ /^[\w\-]+@[\.\w\-]+$/ ) {…} Beispiel: Österreichische Postleitzahl? if ( $plz =~ /A\s*-\s*\d{4}$/ ) {…} Beispiel: whitespace vorne und hinten entfernen… $satz =~ s/^\s*(.*?)\s*$/$1/; Perl: pattern matching and regular expressions

  12. \n - Zeilenumbruch \t - Tabulator \w - Irgendein alphanumerischer (word) Buchstaben; [a-zA-Z0-9_] \W - nicht alphanumerisch (non-word); ist identisch mit [^a-zA-Z0-9_] \d - Eine Zahl. Ist identisch mit [0-9] \D - Keine Zahl. Ist identisch mit [^0-9] \s - 'whitespace character': space, tab, newline, etc \S - 'non-whitespace character' \b - Wortgrenze (nur ausserhalb []) \B - Innerhalb eines Wortes . - Ein einzelner Buchstaben ohne newline ^ - Zeilen- oder Stringanfang (nur außerhalb von []) $ - Zeilen- oder Stringende * - Null oder mehrere Male den letzten Buchstaben (gierig / greedy) *? - Null oder mehrere Male den letzten Buchstaben (minimal) + - Ein oder mehrere Male den letzten Buchstaben (gierig / greedy) +? - Ein oder mehrere Male den letzten Buchstaben (minimal) ? - Null oder ein Mal den letzten Buchstaben [abc] - a oder b oder c [^ab] - weder a noch b [a-z]+ - Irgendeine Folge von Kleinbuchstaben | - entweder oder; z.B.: (eg|le)gs Entweder eggs oder legs () $1 - Teil des Strings merken {2,4} - Quantifier \i - ignore case (nach Muster) \g - greedy (nach Muster)

More Related