«Буквенно-цифровой» теперь немного двусмысленно, поскольку многие люди, все еще зараженные ASCII, думают, что это означает AZ с 0-9, но Perl думает об этом по-разному в зависимости от версии ( Знайте свои классы персонажей с различной семантикой ).Как и с любым регулярным выражением, ваша работа заключается в разработке шаблона, который включает в себя только то, что вы хотите, и не исключает того, что вы действительно хотите.
Кроме того, многие люди все еще используют ^
для обозначения началастроки, которая делает, если нет флага /m
.Однако модуль re теперь может устанавливать флаги по умолчанию, поэтому ваше регулярное выражение может не соответствовать тому, что вы думаете, когда другой программист пытается помочь.
Я склонен писать такие вещи как:
my $alphanum = qr/[a-z0-9]/i;
my $regex = qr/
\A # absolute start of string
(?:$alphanum)+ # I can change this elsewhere
;
/x;
if( $line =~ $regex ) { ... }