ich habe ein Template (Datei) die so aussieht.
Messwert: "H1_temperatur" °C
usw.
Jetzt lese ich die Datei mit jeder Zeile ein und sage.
Suche alles zwischen den Anführungszeichen
$variablenname = s/^"+"$
und es sollte H1_temperatur herauskommen. Macht natürlich nicht !!!
zum Schluss habe ich den Messwert von x geholt und will Ihn eintragen
$zeile =~ s/^"+"$/$data/;
Ich will nun das das Ergebnis "Messwert: 23,7 °C" aussieht.
zerlege deine RE in verschiedene Tokens mit der qr// Syntax.
Nehmen wir an, du hast "a b c"
und willst, dass am Ende "a data c"
dasteht,
wobei a, b, c beschreibbar sind mit Patters
my $a = qr/(?:Messwert|Sollwert):/;
my $b = qr/"[^"]*"/;
my $c = qr/°[CKF]/; #Celsius, Kelvin oder Farenheit
Dann bauen wir das Suchpattern zusammen:
my $pat = qr/^($a) $b ($c)/; # hier werden $1 und $2 gespeichert.
Und nun der Test: Angenommen wir haben ein Filehandel offen:
while(<FH>){
s/$pat/$1 $data $2/;
}
Wir haben das Pattern ausserhalb der Schleife zusammen gebaut. Das ist also schon mal schnell.
mfg Beat