Perltidy форматирует многострочные

Я пытаюсь заставить perltidy отформатировать оператор if следующим образом:

if ($self->image eq $_->[1]
        and $self->extension eq $_->[2]
        and $self->location  eq $_->[3]
        and $self->modified  eq $_->[4]
        and $self->accessed  eq $_->[5]) {

но что бы я ни пытался, он настаивает на форматировании следующим образом:

if (    $self->image eq $_->[1]
    and $self->extension eq $_->[2]
    and $self->location  eq $_->[3]
    and $self->modified  eq $_->[4]
    and $self->accessed  eq $_->[5]) {

Кроме того, есть ли способ получить последнюю строку этого блока:

$dbh->do("INSERT INTO image VALUES(NULL, "
    . $dbh->quote($self->image) . ", "
    . $dbh->quote($self->extension) . ", "
    . $dbh->quote($self->location) . ","
    . $dbh->quote($self->modified) . ","
    . $dbh->quote($self->accessed)
    . ")");

чтобы перейти к предыдущей строке, как и в других строках:

$dbh->do("INSERT INTO image VALUES(NULL, "
    . $dbh->quote($self->image) . ", "
    . $dbh->quote($self->extension) . ", "
    . $dbh->quote($self->location) . ","
    . $dbh->quote($self->modified) . ","
    . $dbh->quote($self->accessed) . ")");

Вот что я сейчас делаю:

perltidy -ce -et=4 -l=100 -pt=2 -msc=1 -bar -ci=0 reporter.pm

Спасибо.


person user2597239    schedule 18.07.2013    source источник


Ответы (1)


Мне нечего предложить по 1-му вопросу, но что касается 2-го, рассматривали ли вы возможность рефакторинга для использования заполнителей? Вероятно, он будет лучше форматироваться, автоматически делать кавычки для вас и давать вам (и пользователям вашего модуля) надежный барьер против проблем с SQL-инъекциями.

my $sth = $dbh->prepare('INSERT INTO image VALUES(NULL, ?, ?, ?, ?, ?)');
$sth->execute(
    $self->image,    $self->extension, $self->location,
    $self->modified, $self->accessed
);


Я также обнаружил пропуск формата: -fs для защиты определенного сегмента кода от perltidy. Я бы привел пример здесь, но Сайт, кажется, делает над ним топорную работу...

person tjd    schedule 19.07.2013