О кавычках

| Нет комментариев

Строки в двойных кавычках в перле интерполируют переменные, и время от времени возникает вопрос о том, нужно ли пользоваться одинарными кавычками, если в строке нет переменных.

С одной стороны, если всегда писать двойные кавычки, то не придется судорожно отлаживать изменения, когда дописываешь к строке переменную или перевод строки, а получаешь код $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", обновив все заголовки во всей таблице. 

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 07.12.2009 23:00. Автор — ash.

Предыдущая запись — Moscow.pm offline #17

Следующая запись — Второй болгарский Perl-воркшоп

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