Ich bin Zeichenfolge eine Zeichenfolge ersetzen mit "/" Perl, unter Codeeine Zeichenfolge ersetzen vorwärts enthalten Strich "/" in Perl
datei.txt enthält
/usr/open/xyz -getCh $svr
Code
open(FILE, "</tmp/file.txt") || die "File not found";
my @lines = <FILE>;
close(FILE);
my $stringToReplace = "\/usr\/open\/xyz -getCh \$svr";
my $stringToReplaceWith = "echo \"y\" | \/usr\/open\/xyz -getCh \$svr";
my @newlines;
foreach(@lines) {
$_ =~ s/$stringToReplace/$stringToReplaceWith/g;
push(@newlines,$_);
}
open(FILE, ">/tmp/file.txt") || die "File not found";
print FILE @newlines;
close(FILE);
Der obige Code funktioniert nicht für mich.
Geck. Sie können ein beliebiges Zeichen verwenden, um die Umrandungen der Regexp zu markieren. Da Sie keine Informationen darüber geben, wie es "nicht funktioniert", nehme ich an, dass Sie Probleme haben, weil Sie "/" verwenden, um die Regexp zu markieren. verwenden Sie stattdessen diese Zeile zum Beispiel: $ _ = ~ s {$ stringToReplace} {$ stringToReplaceWith} g; –
Das hat nichts mit Schrägstrichen zu tun. Das Problem ist (wahrscheinlich), dass '$' in einer Regex nach dem Ende der Zeichenkette sucht, nicht nach einem literalen Dollarzeichen. Aber "der Code funktioniert nicht" ist keine Problembeschreibung, und Sie haben anscheinend keine Mühe darauf verwendet, das Problem selbst aufzuspüren (Ihr Code ist bei weitem nicht minimal). – melpomene
Starten Sie jede Perl-Datei mit 'use strict; Verwenden Sie Warnungen; '. – melpomene