Итак, я работал над скриптом perl, который выполняет команды подстановки на входе, а на входе будут обратные косые черты. Так просто заменить текст с новым текстомЗамена текста на обратную косую черту с помощью команды замены perl
Например, если вход был
"\text"
Я мог бы выход
"newText"
Обратите внимание, что слеш удаляется.
Вот код, который делает это:
$oldText = "\\Text";
while (<STDIN>) {
$ln = $_;
$ln2 = $_;
$ln2 =~ s/\\Text/newText/;
$ln =~ s/$oldText/newText/;
}
print "$ln\n";
print "$ln2\n";
Когда вход «Текст» выход
\newText #Incorrect because the \ is still there
newText #Correct
Может кто-нибудь объяснить, почему с помощью строки вместо переменной изменяет выходной быть тем, что я хочу? Я знаю, что \ derefences следующий символ, и это, вероятно, источник проблемы. Но я не могу понять, почему использование переменной меняет результат. Изменение переменной oldText на «\ text» не изменяет результат.