|
|
Thema Leistungsoptimiert Mittwoch, 28.2.2007, 09:52:54 Uhr
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...
Montag, 26.2.2007, 07:37:51 Uhr
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...
Mittwoch, 21.2.2007, 13:40:30 Uhr
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:
Weiterlesen...
Freitag, 2.2.2007, 13:38:21 Uhr
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...
|
|
|
|
| Gelesene Beiträge insgesamt: 4426890 |
|
|