björn sippel: aufbereiten von systemvariablen (windows)

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 ?

  1. Hat jemand einen Vorschlag ?

    Benutze quotemeta.

    1. 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 ??

      1. $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.

        1. Hallo anonymous,

          vielen Dank für die Hilfe,
          hat prima geklappt,

          Gruss,
          Björn Sippel