Kleiner Perl Notfall

Begonnen von zweiundzwanzig, 06 November 2016, 15:18:43

Vorheriges Thema - Nächstes Thema

zweiundzwanzig

Hallo,
ich habe gerade ein kleines aber relativ wichtiges PErl Problem.

Kurze Erklärung der Rahmenbedingungen:
Es gibt einen Outlook Kalender, der mir als ics zur Verfügung gestellt wird.
Die Ortsangaben in den Terminen Sollen bestimmte Heizungsaktoren triggern. Weil die Raumbezeichnungen sehr chaotische sind möchte ich die ics Datei vorher parsen und die chaotischen Begriffe in  für mich nutzbare Begriffe ersetzen.

Beispiel der Ausgangsdatei:

LOCATION:Kaffeebar\; Saal


Mein Percode:
#!/usr/bin/perl

use strict; use warnings; use autodie;

my %repl = (
  "Kaffeebar" => "Raum_Kaffeebar",
  "Saal" => "Raum_Saal",
  '\; ' => ';',
);

system ("wget -O /home/cgw/calendarconversion/reachcalendar.ics https://EINEURL/reachcalendar.ics");



open( my $F, '<', "/home/cgw/calendarconversion/reachcalendar.ics" );
open( my $OUTPUT, '>', "/home/cgw/calendarconversion/convertedcalendar.ics" );

while ( <$F> ) {
  foreach my $key ( sort keys %repl ) {
     s/$key/$repl{$key}/g;
#s/\b$key\b/$repl{$key}/g;
  }
  print $OUTPUT $_;
}

close( $F );
close( $OUTPUT );



Das Ergebnis ist:

LOCATION:Raum_Kaffeebar\;Raum_Saal


Warum zum Geier ist da noch der BACKSLASH? Ich habe doch single quotes benutzt. Und warum wird der Rest des hashes trotzdem getauscht? %-)
2x MAX CuBe mit a-culf im Moritzbetrieb
1x MAX CuBe mit a-culf im Homematicbetrieb
60x MAX Heizkörperthermostat plus | 2x HM Schaltaktoren | 1x MAX Wandthermostat
1x FHEM Ubuntu Server auf VMWare
24 Räume, die durch ical Kalender geheizt werden

zweiundzwanzig

Habe einen workarround gefunden, finde das aber trotzdem komisch....
2x MAX CuBe mit a-culf im Moritzbetrieb
1x MAX CuBe mit a-culf im Homematicbetrieb
60x MAX Heizkörperthermostat plus | 2x HM Schaltaktoren | 1x MAX Wandthermostat
1x FHEM Ubuntu Server auf VMWare
24 Räume, die durch ical Kalender geheizt werden

dev0