aufbereiten von systemvariablen (windows)
björn sippel
- perl
Hallo zusammen,
unter Windows soll unter anderem die TEMP-Variable
durch einen etwas sprechenderen String ersetzt werden.
Beispiel:
$ztemp = $ENV{TEMP};
H:\DOCUME~1\a\LOCALS~1\Temp
soll z.b. durch T1 ersetzt werden.
Alle Versuche mittels $ztemp=~ s/.../T1/i
oder mit tr schlugen fehl, da immer die Zeichen nach
dem Backslash innerhalb der TEMP-Variable als Sonderzeichen angemeckert wurden.
-->>Unrecognized escape \D passed ... usw. aus H:\D<--
Versuche, diese zu maskieren, schlugen ebenfalls fehl.
Außerdem soll das automatisch erfolgen, da hier
eine Dateiliste aufbereitet werden soll, ohne jedesmal
jede Zeile "manuell" zu bearbeiten.
Hat jemand einen Vorschlag ?
Hat jemand einen Vorschlag ?
Benutze quotemeta.
Hat jemand einen Vorschlag ?
Benutze quotemeta.
Hallo anonymous alias FTP (?),
hatte ich schon probiert, jedoch ohne Erfolg.
Beispielcoding:
______________________________________________________________
my $ztest=quotemeta('H:\DOCUME~1\a\LOCALS~1\Temp\123\zut.ini');
my $zz=quotemeta('H:\DOCUME~1\a\LOCALS~1\Temp');
print "string: $ztest\n";
print "Z:-$zz\n";
$ztest =~ s/quotemeta('$zz')/hallo/i;
print "ztest: $zz\n";
______________________________________________________________
Es sollte als Ergebnis erscheinen:
hallo\123\zut.ini
Ergebnis ist jedoch
-->>H:\DOCUME~1\a\LOCALS~1\Temp
Irgendeinen Verbesserungsvorschlag ??
$ztest =~ s/quotemeta('$zz')/hallo/i;
Hier hat das quotemeta nichts mehr zu suchen. $ztest solltest du auch nicht
mit quotemeta behandeln. Lediglich $zz muss mit quotemeta behandelt werden.
Hallo anonymous,
vielen Dank für die Hilfe,
hat prima geklappt,
Gruss,
Björn Sippel