Я использую Perltidy , чтобы переформатировать несколько моих старых файлов Perl в стиль, который ближе к моим текущим предпочтениям. Я столкнулся с проблемой в этом фрагменте:
Fcntl::S_IRUSR & $mode
Perltidy настаивает на удалении пробела после &
токена, в результате чего получается:
Fcntl::S_IRUSR &$mode
... что, на мой взгляд, является бельмом на глазу. Что я могу сделать, чтобы убедить Перлтиди оставить это место в покое? Я даже попробовал -fws
вариант безрезультатно.
Я использую Perltidy 20101217, который, очевидно, является последней версией.
EDIT:
Несколько дополнительных замечаний:
РЕДАКТИРОВАТЬ 2:
В итоге я изменил порядок аргументов оператора &
, так как это, похоже, пока работает с проблемой Perltidy. Кроме того, этот подход не требует добавления дополнительных скобок или каких-либо других токенов, которые могут помочь Perltidy делать правильные вещи, но определенно запутают me в долгосрочной перспективе .
UPDATE:
Я связался со Стивом Хэнкоком, автором Perltidy, по этому вопросу. Из его ответа:
Я проверил, и проблема в том, что & ошибается в этом
регистр как сигил вызова функции. Основная проблема заключается в том, что perltidy
не видит прототипы для других модулей, даже встроенных, поэтому он должен
угадайте, когда речь заходит о чем-то вроде "Fcntl :: S_IRUSR". В других
словами, он не знает, является ли это вызовом функции или константой, и
должен угадать. Когда вы отменили заказ, он убрал неоднозначность
&.
Спасибо за примечание. Я посмотрю, смогу ли я придумать патч, чтобы исправить
это.