s/../.. - Variableninterpolation
alligator
- perl
Hi zusammen,
ich will den Inhalt der Variable bei einer Substitions druch "nichts"
ersetzen.
Meine Variable:
my $quelle = "D:\Proggen\Perl\Projekte\me-spiegel\sp";
Meine Substitution:
($relativer_pfad=$pfad_dos)=~ s/$quelle//g;
Folgende Fehlermeldung:
Unrecognized escape \m passed through in regex; marked by <-- HERE in m/D:\Proggen\Perl\Projekte\m <-- HERE e-spiegel\sp/ at
me-spiegel\me-spiegel.pl line 31.
Wenn ich es so mache:
($relativer_pfad=$pfad_dos)=~ s/D:\Proggen\Perl\Projekte\me-spiegel\sp//g;
Dann funktioniert es einwandfrei. Kann mir jemand weiterhelfen, wie
ich dieses Problem lösen könnte und woran sagen woran es liegt ?
cya
alligator
Sup!
Vielleicht hilft
my $quelle = 'D:\Proggen\Perl\Projekte\me-spiegel\sp';
ja schon. Denn sonst wird "dank" Double-Quotes das \ sofort in \ übersetzt... und dann im RegExp wird \m zu irgendwas komischem... und dann ist doof.
my $quelle = "D:\\" könnte auch gehen, ist aber irgendwie blöde.
Gruesse,
Bio
Sup!
Vielleicht hilft
my $quelle = 'D:\Proggen\Perl\Projekte\me-spiegel\sp';
ja schon. Denn sonst wird "dank" Double-Quotes das \ sofort in \ übersetzt... und dann im RegExp wird \m zu irgendwas komischem... und dann ist doof.
stimmt :o)
Danke.
cya
alligator
Hi zusammen,
ich will den Inhalt der Variable bei einer Substitions druch "nichts"
ersetzen.Meine Variable:
my $quelle = "D:\Proggen\Perl\Projekte\me-spiegel\sp";Meine Substitution:
($relativer_pfad=$pfad_dos)=~ s/$quelle//g;Folgende Fehlermeldung:
Unrecognized escape \m passed through in regex; marked by <-- HERE in m/D:\Proggen\Perl\Projekte\m <-- HERE e-spiegel\sp/ at
me-spiegel\me-spiegel.pl line 31.
Ich bin mir jetzt nich ganz sicher, aber ich glaube du suchst:
\Q quote (disable) pattern metacharacters till \E
If use locale is in effect, the case map used by \l, \L, \u and \U is taken from the current locale. See the perllocale manpage. For documentation of \N{name}, see the charnames manpage.
You cannot include a literal $ or @ within a \Q sequence. An unescaped $ or @ interpolates the corresponding variable, while escaping will cause the literal string $ to be matched. You'll need to write something like m/\Quser\E@\Qhost/.
Wobei ich das so verstehe, das du den String von Hand escapen musst, evtl. mit sowas:
$quelle =~ s/\/\\/g;
Struppi.
P.S.: kann aber auch Quatsch sein, hab grad keine Lust das testen.
HI,
also so tut es jetzt anscheinend ...
my $quelle = 'D:\Proggen\Perl\Projekte\me-spiegel\sp';
($relativer_pfad=$pfad_dos)=~ s/\Q$quelle\E//g;
DAnke.
cya
alligator
Hi nochmal,
also bis jetzt hab ich die Lösung noch nicht gefunden, obwohl ich anfangs dachte, das Bio´s Lösung tun würde :o(
Also hoffe auf weiter Lösungsvorschläge ..
cya
alligator
Sup!
Vielleicht geht ja
my $quelle = quotemeta(D:\Proggen\Perl\Projekte\me-spiegel\sp);
($relativer_pfad=$pfad_dos)=~ s/$quelle//g;
Gruesse,
Bio