Forum Webscript.Ru

Программирование => Perl => Тема начата: Duke от 24 Марта 2003, 08:40:40

Название: как "выбрать" IP из строки?
Отправлено: Duke от 24 Марта 2003, 08:40:40
Сразу оговорюсь, что регулярные выражения для меня чужды. Я тольк взялся с ними разбираться.

Задача такая.
Один скрипт пингует ийпишники сети, а информацию о "ответивших" записывает в текстовый файл. Вот несколько строк этого файла.

Host 217-106-130-10.siberianet.ru (217.106.130.10) appears to be up.
Host 217-106-130-12.siberianet.ru (217.106.130.12) appears to be up.
Host 217-106-130-13.siberianet.ru (217.106.130.13) appears to be up.
Host 217-106-130-15.siberianet.ru (217.106.130.15) appears to be up.

Другой маленький скриптик бонально читает эти строки из файла и выводит в окно браузера.

Подскажите регулярное выражение которое бы "выбирало" из каждой строки только IP?

Т.е. после его работы в браузере должен быть просто перечень IP-шников:

217.106.130.10
217.106.130.12
217.106.130.13
217.106.130.15
Название: как "выбрать" IP из строки?
Отправлено: Chs от 24 Марта 2003, 09:22:45
Поиск по форуму рулит.
Название: как "выбрать" IP из строки?
Отправлено: Mog. от 24 Марта 2003, 16:09:38
Читаешь файл в @dat и

for(@dat){ if(/\\(([\\d\\.]+)\\)/){print $1}}

Должно напечатать только ip

[off]Если не ошибаюсь :) [/off]
Название: как "выбрать" IP из строки?
Отправлено: Duke от 25 Марта 2003, 07:38:21
Спасибо, я разобрался. Всё оказалось оч просто :)

foreach (@ar_allmail) {
#Host 217-106-130-206.siberianet.ru (217.106.130.206) appears to be up.
   ($host, $domen, $ip, $a, $b, $c, $d) = split;
   if ($host eq \'#\') {next;}
   ($ip2)=$ip=~/\\((\\d+\\.\\d+\\.\\d+\\.\\d+)\\)/;
    print "$ip2
";
}