Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простой пингер, всегда возвращает "OK" 
:(
    Опции темы
trinitr0
  Дата 18.11.2013, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.6.2013

Репутация: нет
Всего: нет



Пытаюсь написать простой пингер:

Код

#!/usr/bin/perl
my $ip = pop @ARGV;
 $ping =  "ping -c 1 -q $ip";
        @lines = `$ping`;
        for $line (@lines) 
        {
        if ($line =~ /\s+(\d+)% packet loss/)
            {            
                            if ($line eq '100')
                {print "FAILURE\n";}
                     else
                   {print "OK!\n";}
        }


но он в любом случае возвращает  всегда "OK".

Подскажите пожалуйста!
PM MAIL Jabber   Вверх
od0201
Дата 18.11.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: 1
Всего: 1



если 
if ($line =~ /\s+(\d+)% packet loss/) истина
то
if ($line eq '100') всегда будет ложью

попробуйте
if ($1 eq '100')

Это сообщение отредактировал(а) od0201 - 18.11.2013, 13:44
PM MAIL   Вверх
trinitr0
Дата 18.11.2013, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.6.2013

Репутация: нет
Всего: нет



спасибо! Помогло!  smile 

Но можно пару слов объснения?

Код
if ($1 eq '100')


Что содержится в данном случае в $1?



Это сообщение отредактировал(а) trinitr0 - 18.11.2013, 14:24
PM MAIL Jabber   Вверх
Bulat
Дата 18.11.2013, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(trinitr0 @  18.11.2013,  13:13 Найти цитируемый пост)
(\d+)

Результат вышеуказанной конструкции в регулярном выражении. Подробно почитай хотя бы чуть-чуть про регулряные выражения в перл


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
od0201
Дата 18.11.2013, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 16.1.2009

Репутация: 1
Всего: 1



$line =~ /\s+(\d+)% packet loss/
у Вас регулярное выражение (поиск в строке) где \d+ значает цифры в количестве 1 и более штук, 
() означают копирование их содержимого в $1,$2,$3..., в Вашем случае цифры, если они будут найдены упадут в $1
и $line остается неизменным при поиске...

Это сообщение отредактировал(а) od0201 - 18.11.2013, 14:36
PM MAIL   Вверх
trinitr0
Дата 18.11.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.6.2013

Репутация: нет
Всего: нет



Всё совершенно ясно! Я приблизетельно так  и предполагал что дело в ссылках назад, но небоьшой опыт не позволил достич полного просветления

Спасибо вам od0201 за развёрнутый ответ!

Bulat - тоже спасибки!


PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.