Forum Webscript.Ru

Программирование => Perl => Тема начата: sickboy от 16 Декабря 2005, 22:30:35

Название: чтение переменной построчно [только сильно не бейте]
Отправлено: sickboy от 16 Декабря 2005, 22:30:35
Hi,

Есть такая переменная:
$host=`/usr/bin/host -t mx $hostname`;
вот ее содержимое, к примеру:
yandex.ru mail is handled by 10 mx2.yandex.ru.
yandex.ru mail is handled by 0 mx1.yandex.ru.

Из этих строк нужно последовательно извлеч
mx2.yandex.ru.
затем
mx1.yandex.ru.
я это делаю так:
@host= split (/\\s+/, $host);
print "@host[6]\\n";
но так я получу только последнюю строку, а как получить все?

Извиняюсь за ламерский вопрос, только начал изучать perl.
Спасибо.
Название: чтение переменной построчно [только сильно не бейте]
Отправлено: Kannabismus от 17 Декабря 2005, 15:45:16
Сначала разбейте вывод на строки, потом для каждой строки ищите host.
Например:

; push @hosts, /\\s+([\\w\\.]+)$/ for split("\\n", $host)
; print "hosts: ", join(", ", @hosts)
Название: чтение переменной построчно [только сильно не бейте]
Отправлено: sickboy от 20 Декабря 2005, 21:00:05
Спасибо.
Название: чтение переменной построчно [только сильно не бейте]
Отправлено: sickboy от 27 Декабря 2005, 18:33:29
появился еще один вопрос:
для некоторых хостов нет MX записи, и при запросе:
host -t mx 555.ru
ничего не возвращается.
как можно отследить эту пустую строку?
Название: чтение переменной построчно [только сильно не бейте]
Отправлено: arto от 27 Декабря 2005, 19:10:52
# host -t mx 555.ru
555.ru has no MX record
#
Название: чтение переменной построчно [только сильно не бейте]
Отправлено: sickboy от 10 Января 2006, 21:51:26
arto
какой продвинутый у вас host

Всем спасибо, я уже решил свою задачу.