ich verstehe nicht warum mein RegExp nicht funktioniert (also "Mist" ausgibt) in Variante 1, Variante 2 und Variante 3.
Variante 1:
$File_anfang="C:\ABC.1\datei";
erstens: immer use strict und use warnings. warnings hätte dich hier gewarnt:
Unrecognized escape \A passed through at ...
Unrecognized escape \d passed through at ...
wenn du sowas schreibst: "C:\ABC.1\datei"
dann werden die backslashes verschwinden, egal, ob du aussenrum noch quotemeta packst. es hilft nichts, denn quotemeta bekommt keine backslashes mehr zu gesicht.
zweitens: wenn irgendwas nicht so klappt, wie du denkst, also z.b. eine regex nicht matcht, dann gib dir doch den string und die regex vorher mit print aus! ich zumindest hasse es, blind zu raten.
dann hättest du gesehen, dass die backslashes gar nicht mehr vorhanden sind.
du musst single quotes nehmen oder wie gesagt die backslashes selbst escapen.
'C:\ABC.1\datei'
"C:\\ABC.1\\datei"
und wenn du das dann erstmal noch in eine normale variable packst und danach als regex verwendest, dann musst du noch ein quotemeta drumherum packen. sonst sieht die regex wiederum auch nur einen backslash.