Отрицательные утверждения за кадром плохо работают, если контент, который вы пытаетесь сопоставить после , является настолько общим, что он соответствует самому утверждению.Подумайте:
perl -wle'print "en.website" =~ qr/(?<!en\.)web/' # doesn't match
perl -wle'print "en.website" =~ qr/(?<!en\.)[a-z]/' # does match, because [a-z] is matching the 'en'
Лучшее, что можно сделать здесь, - это то, что предложил Дэвид: используйте два шаблона для выявления хороших и плохих значений:
my @matches = grep {
/$pattern1/ and not /$pattern2/
} @strings;
... где pattern1 соответствует всемURL-адреса, а pattern2 соответствует только URL-адресам en.