Euro Symbol mit WriteExcel ausgeben

Dienstag, 13. März 2007

Wer auch daran verzweifelt, das Euro-Symbol in Perl mit WriteExcel in einem String ausgeben zu wollen, dem kann hier geholfen werden.
Write Euro symbol in string?
Es bewahrheitet sich leider immer wieder: Immer erst die Dokumentation lesen, dann bei Google suchen

In meinem Fall mußte ich während dem Ersetzen in einer Regular Expression auch noch Perlcode ausführen um eine Kleinigkeit zu berechnen. Ich hatte das ganze schonmal vor Jahren in irgendeinem Skript gesehen, konnte mich beim besten Willen aber nicht mehr daran erinnern wie das ging. Und wenn man nicht weiß wonach man suchen soll, dann hilft einem Goggle leider auch recht wenig.

Fündig bin ich dann doch noch im perlretut (Wo auch sonst!)

Aus dem Tutorial:
"A modifier available specifically to search and replace is the s/e evaluation modifier. s/e wraps an eval{...} around the replacement string and the evaluated result is substituted for the matched substring. s///e is useful if you need to do a bit of computation in the process of replacing text."

Also genau das Gesuchte. Hier ein kleiner Beispielcode:

  1. $x = "Hallo Hello Hallo Hello Hallo Hello";
  2. $counter=1;
  3. $x =~ s/(Hallo)/$1.$counter++/eg;
  4. print$x;

Ausgabe: Hallo1 Hello Hallo2 Hello Hallo3 Hello

Zu beachten ist, dass der Ersetzen-Ausdruck nun Perlcode enthalten muss, da er ja nun mit einem eval{} umschlossen wird. Vergisst man dies bekommt man meist die Fehlermeldung:
Scalar found where operator expected at test.pl

Wer das ganze auch noch während des Matchen benötigt, dem sei folgender Abschnitt empfohlen:
A bit of magic: executing Perl code in a regular expression
(Seite 1 von 1, insgesamt 2 Einträge)