Thread dateien löschen
(25 answers)
Opened by DerVersuch at 2010-01-14 22:01 Guest anon Beginnend mit Perl 5.10 kann man auch benannte Captures nutzen, womit die Reihenfolge komplett egal wird und eine Regex leichter zu warten wird. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my $str1 = "Number 123"; $str1 =~ m/\A (?<word> \w+ ) \s+ (?<number> \d+ ) \z /xms; my %m1 = %+; my $str2 = "Foobar 456"; $str2 =~ m/\A (?<word> \w+ ) \s+ (?<number> \d+ ) \z /xms; my %m2 = %+; print "Match1: ", Dumper(\%m1), "\n"; print "Match2: ", Dumper(\%m2), "\n"; Code: (dl
)
1 Match1: $VAR1 = { Quote Keine Programmiersprache ist perfekt und auch Python hat genug Probleme. Zum Beispiel muss Python eine Regex immer wieder neu Compilieren wenn sie auftaucht. Bei Perl ist eine Regex in der Sprache fest eingebaut was bedeutet das die Compilierung zur Compilierzeit passiert. Zwar hat Python ein Cache der glaube ich bei Default 20 oder so liegt, hat man aber 21 Regexe in einer Schleife oder sind generell 21 regexe vergangen wird ständig neu compiliert wodrunter die Performance leidet. Auch das Python bis Heute kein Pendant zu "use strict;" hat (Selbst JavaScript bekommt balt ein Strict Modus!!!) lässt mich etwas an der Sprache zweifeln. Was ich damit sagen möchte, jede Sprache hat seine Mängel, und Perl auch zu hauf, ich kann dir da auch eine Menge nennen. Aber naja darüber lachen. Das zeigt mir dann eher das der Programmierer selber rückständig ist. Quote Die habe ich dir oben übrigens geliefert. Quote Grundsätzlich hast du recht und ich gebe dir auch recht. Trotzdem ist Perl keine Sprache wo sich jeden Monat etwas ändert weil man gerade erleuchtet wurde und es besser weiß. Perl bewahrt seine Abwärtskompatibilität. Laut aussagen soll selbst ein 20 jahre altes Perl 1 Skript noch auf Perl 5.10 laufen. Da ich kein Perl 1 kann, kann ich das nicht bestätigen, aber das ist eine Qualität die für sich spricht. Das ist auf einer Seite toll, hat aber auch den Nachteil das "altlasten" eben solche wie $1 mit den jahren mitgeschleppt werden. Python das alle Nase lang mit 2.4 nach 2.5 und jetzt 2.6 änderungen erlebt und das auch tiefgehende (austausch des Objektsystems) etc. würde mir nicht all zu sehr gefallen. Aber vielleicht läuft auch kein Kritischer Code mit Python so das das egal ist? Ich weiß es nicht, aber mir mag es egal sein. Ansonsten schaut die Alternative aus, lediglich mit $1 zu leben, und sich einfach zu mercken wenn man einen Capture Parameter nutzen möchte diesen danach einer Variablen zuzuweisen. Das halte ich nicht für besonders komplex und löst die Probleme und bewahrt gleichzeitig die Abwärtskompatibilität. Ich halte das für einen Kompromiss der okay ist. Zwar nicht perfekt, aber volkommen okay. Es gibt schlimmere Sachen als sich über solches "low-level" zeug aufzuregen. Zum Beispiel wäre eine fehlende Datenbankabstraktion, keine XML/HTML Parser etc. für mich eher ein KO Kriterium für eine Sprache, und punkte auf die es ankommt. Nicht ob ich $1, $2 nutze, ein objekt zurück bekomme. Klammern, "begin" oder "end" oder durch whitespaces dargestellt werden, oder ob es Sigils gibt etc. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|