Первый из них - это ложное срабатывание IMO, поскольку while
действует здесь как условное условие - push @array, $1
не будет выполнено, пока не будет выполнено соответствие регулярному выражению, чего и хочет политика (добавьте --verbose 11
к perlcritic
вызов, чтобы увидеть объяснения). Это тот случай, когда я думаю, что безопасно подавлять политику, как я покажу ниже.
Второй легко исправить, просто замените $n =~ /.../xg
на $n =~ m{...}xg
.
push @array, $1 ## no critic (ProhibitCaptureWithoutTest)
while $n =~ m{ ... }xg;
Это подавляет эти два сообщения.
Как примечание: запуск perlcritic
при brutal
серьезности является IMO немного экстремальным, и он будет жаловаться на множество других вещей в этом фрагменте. Лично, когда я использую его, я запускаю perlcritic
на harsh
(-3
) с несколькими политиками на настроенных уровнях.
Редактировать: Что касается вашего третьего perlcritic
сообщения, которое вы добавили в свое сообщение позже, похоже, что на него ответили в вашем другом сообщении .