2016-08-11 2 views
0

Я не могу найти ресурсы для этого. Я хочу избежать двойных кавычек с perl, и я новичок в этом языке.Исключение двойных кавычек исправить

Вот что у меня есть:

$comment =~ s/\"/\\\"/g; 

Это, кажется, не работает. Какое правильное решение?

+1

'Perl -E«$ коментарий = "а \" Ъ "скажем, $ комментарий, $ комментарий = ~ s /"/\\ "/ г, скажем, $ комментарий '' показывает, что ваш код выполняет свою работу, поэтому проблема заключается в probaby в другом месте. Пожалуйста, покажите нам весь ваш код, чтобы мы могли помочь. – Dada

+0

Из любопытства, почему вы пытаетесь избежать котировок? – ThisSuitIsBlackNot

+0

@ThisSuitIsBlackНет, потому что некоторые из них данные имеют двойные кавычки, и это вызывает проблему с нашим xml – slicks1

ответ

0

Один из способов, чтобы вставить вещи, которые нужно было бы избежать, не считая обратной косой черты

$comment =~ s/"/q(\")/eg; 

/e С модификатором замена части оценивается как код, и результат используется в качестве замены. См. Его in perlop и, скажем, this post. Здесь это используется для принудительной строки в q().

Обратите внимание, что в этом простом случае s/"/\"/ отлично работает. Вероятно, в вашем коде больше всего происходит, или ваши котировки идут уже сбежавшими, и в этом случае дополнительные \ влияют на то, что вы видите позже.

0

не требуется подсчитывать:

$comment =~ s.(?=").\\.g; 
Смежные вопросы