Имеется следующий код:$address = "123.221.143.167";
if ($address =~ m/(?:(\d{1,3})\.){3}\1/) {
print "Value $address is corresponds to pattern";
} else {
print "Neponyatka";
}
обратная ссылка "\1" в регулярном выражении должна соответствовать "\d{1,3}". Вся конструкция, следовательно, при любом значении ip-адресса в переменной $address, должна возвращать истину в операторе ветвления. Но именно тот факт, что используется обратная ссылка на подвыражение (\d{1,3}) приводит к неожиданному поведению программы. Что интересно, если взять ip-адресс 1.1.1.1 - всё работает нормально, а 1.1.1.2 - уже не проходит. Подскажите кто знает в чём загвоздка.