Строки в двойных кавычках в перле интерполируют переменные, и время от времени возникает вопрос о том, нужно ли пользоваться одинарными кавычками, если в строке нет переменных.
С одной стороны, если всегда писать двойные кавычки, то не придется судорожно отлаживать изменения, когда дописываешь к строке переменную или перевод строки, а получаешь код $var\n на выводе.
С другой стороны, одинарные кавычки спасут от опечатки (или копипейста). Сегодня я решил поправить код пятилетней давности и добавить возможность редактировать заголовок темы на форуме.
Написал «безопасный» SQL-запрос:
my $sth = $dbh->prepare("
update
thread
set
title = ?
where
$thread_id = ?
");
$sth->execute($title, $thread_id);
То, что поле в таблице называется id, а не thread_id, не важно: MySQL не сообщила об ошибке, а спокойно проинтерпретировала интерполированную строку с подставленным значением "...where 8899 = 8899", обновив все заголовки во всей таблице.
Комментировать