Как процитировать строку для запросов в Perl? - PullRequest
1 голос
/ 16 февраля 2012

Мне нужно сопоставить большие строки с полями столбца в mysqlDB. что-то вроде

% ERROR-kkl_ub {}: (от YAMios): пункт назначения (name = sdasdays.s0sda.rindasdth.sbo98.sbssdao_sad) не зарегистрирован.

он содержит много специальных символов, я не могу попытаться сделать \ для каждого из них, так как будут сотни уникальных подписей.

нужна помощь ...

1 Ответ

5 голосов
/ 16 февраля 2012

В perl, мы используем литеральные кавычки с одинарными кавычками или оператор q, который был разработан для цитирования литеральных строк, которые часто могут содержать обычные кавычки. q (и qq для интерполированных строк) позволяет следующему символу быть символом кавычки (аналогично операторам регулярного выражения m и s).

my $var1 = 'this is a "literal" string';
my $var2 = "this is an \"interpolated\" string";
my $var3 = q/this is a "literal" 'string'/;
my $var4 = q{another literal string};
my $var5 = qq/interpolated string, previous one was '$var2'/;

Если вы беспокоитесь о получении строк в SQL-запросах (я допускаю, что ваша формулировка немного сбивает с толку), используйте связанные переменные.

my $dbh = DBI->connect( ... );
my $sth = $dbh->prepare('SELECT * FROM table WHERE id = ? OR string_field = ?');
my $rv = $sth->execute(1425, $var5);

См. DBI perldoc для получения дополнительной информации.

...