Wednesday, February 11, 2009

Kleine Änderung -> große Wirkung

Tja, so was passiert halt, wenn man "mal eben" etwas ändert: Kaum hat man ein paar kleine Änderungen am Quellcode durchgeführt, funktioniert es nicht mehr. Aber es ist nicht so schlimm, dass das Programm abbricht... Es liefert "nur" nicht die Ergebnisse, die es liefern sollte.

Was habe ich gemacht? Ich habe für ein Projekt ein Modul geschrieben, in dem auch Reguläre Ausdrücke verwendet werden. Ich hatte es als

$var =~ /.../;

geschrieben. In dem Projekt soll aber immer die Schreibweise

$var =~ m{ }xms;

genommen werden.

Dumm nur, wenn man einfach alles abändert, ohne sich den Regulären Ausdruck anzuschauen, denn der sa so aus:

/^\Q$check/

und wenn man daraus jetzt

m{ ^\Q$check }xms

macht, dann wird das letzte Leerzeichen gequotet. Normalerweise werden - dank dem 'x'-Modifier - die Leerzeichen nicht für den Regulären Ausdruck berücksichtigt. Da das letzte Leerzeichen dank dem \Q vorher gequotet wird, wird es im Regulären Ausdruck berücksichtigt.

Naja, ich bin dann doch relativ schnell auf den Fehler gekommen und jetzt habe ich überall noch das \E hinzugefügt.

m{ ^\Q$check\E }xms

In dem Zuge habe ich auch noch das ^ durch \A ersetzt...

Aber das zeigt mal wieder, dass kleine Änderungen durchaus große Wirkung haben können.

No comments: