В настоящее время я переписываю некоторый собственный perl-код, используемый в системе продажи билетов OTRS, который используется для создания SQL-подобных запросов. Да, вероятно, есть лучшие способы избежать ввода, но давайте не будем вдаваться в это...
$Param{PostMasterSearch}
содержит адрес электронной почты, например test'[email protected]
(обратите внимание на '
).
my $PostMasterSearch = $Param{PostMasterSearch};
$PostMasterSearch =~ s/'//gms;
$Self->{LogObject}->Log(
Priority => 'error',
Message => "XXXXX: $PostMasterSearch",
);
$SQLExt .= " $Field LIKE '$PostMasterSearch'";
Таким образом, я ожидаю, что найду сообщение журнала, говорящее XXXXX: [email protected]
, и часть SQL-запроса, который выглядит как Email LIKE '[email protected]'
.
Но на самом деле я получаю только сообщение журнала - строка SQL-запроса по какой-то причине Email LIKE 'test'[email protected]'
.
Прикрутить последнюю строку кода, чтобы было похоже
$SQLExt .= " $Field LIKE '$PostMasterSearch' X";
не имеет никакого смысла, но возвращает строку Email LIKE '[email protected]' X
.
Какие-нибудь намеки на то, почему $PostMasterSearch
все еще содержит тот '
, который давно должен был исчезнуть? Или подсказка о том, как соединить $SQLExt
с версией $PostMasterSearch
без '
?
'
не является каким-то символом Юникода, например U+2018 или U+2019? - person choroba   schedule 10.05.2014