Серия постов "Стандарты кодирования Perl". Часть 3: Регулярные выражения

1. Используйте флаг "x" для сложных регулярных выражений

Если вы используете действительно сложное регулярное выражение, используйте модификатор "x" и разделите текст пробелами, чтоб он не выглядел как нагромождение мусора.

2. Используйте удобные ограничители для регулярных выражений

Не используйте наклонную черту в качестве ограничителя когда ваше выражение содержит прямые или обратные наклонные черты:

# Используем удобный ограничитель

$s =~ s{/}{::};
# Это куда нагляднее, чем /\//::/;

3. Разбивайте сложные регулярные выражения на части

Будет гораздо нагляднее, если Вы составите сложное регулярное выражение из нескольких кусочков. Кусочки можно хранить как в виде строк, так и в виде qr//:

# Строим регексп для матчинга чисел с плавающей точкой...

Readonly my $DIGITS => qr{ \d+ (?: [.] \d*)? | [.] \d+ }xms;
Readonly my $SIGN => qr{ [+-] }xms;
Readonly my $EXPONENT => qr{ [Ee] $SIGN? \d+ }xms;
Readonly my $NUMBER => qr{ ( ($SIGN?) ($DIGITS) ($EXPONENT?) ) }xms;

4. Безопасно обрабатывайте данные, получаемые извне

Если Вы используете данные, полученные извне, как есть, тем самым Вы подвергаете систему уязвимости. Используйте квотирование, например, так:

$test =~ m/\b\Q$param_name\E: \s+ (\d+)/x;

 

Original: REG.RU coding standarts