Это половина вопроса и, возможно, половина ответа (вопрос здесь, так как мне еще не разрешено писать комментарии ...). Ладно, поехали:
Серверы имен:
ns.mistral.co.uk 195.184.229.229
Так выглядит запись в файле, который вы анализируете? Что последует сразу после этого - больше доменных имен и IP-адресов? И будут ли между ними пустые строки?
В любом случае, я думаю, что ваша проблема может (частично?) Быть связана с чтением файла построчно. Как только вы доберетесь до строки IP-адреса, информация о присутствии «Серверы имен:» исчезнет. Многострочное сопоставление не поможет, если вы просматриваете файл построчно. Поэтому я бы рекомендовал перейти в режим абзаца:
{
local $/ = ''; # one paragraph instead of one line constitutes a record
while ($record = <DOMAINS>) {
# $record will now contain all consecutive lines that were NOT separated
# by blank lines; once there are >= 1 blank lines $record will have a
# new value
# do stuff, e.g. pattern matching
}
}
Но тогда вы сказали
Я попробовал пример Stackoverflow, где
;
займем следующую строку, но это не сработало для меня, и я предполагаю, что это потому, что мы уже прочитали содержимое этого в $ domaininfo.
так, может быть, вы уже попробовали то, что я только что предложил? В качестве альтернативы можно было бы просто добавить другую переменную ($ индикатор или что-то еще), которую вы установите в 1 после прочтения «Серверы имен:», и до тех пор, пока она равна 1, все последующие строки будут обрабатываться как содержащие данные тебе нужно. Однако возможно ли это, зависит от того, знаете ли вы, что еще содержится в вашем файле данных.
Я надеюсь, что что-то здесь было полезно для вас. Если есть какие-либо вопросы, пожалуйста, задавайте:)