Просьба помочь с RW

 
0
 
Perl
ava
noobperl | 20.05.2013, 15:40
Просьба помочь.
Если то, что я прошу, стоит денег/вознаграждения/гонорара - не вопрос, в личку.

Имеем в интернете страничку, которую генерирует веб-сервер. Там, на странице, голый текст, без кода.
Странички мои личные, чтоб визуально было понятно - укажу её ниже.
Событие "+" (онлайн) имеем: http://h-mem.ru/index1.htm
Событие "-" (оффлайн) имеем: http://h-mem.ru/index2.htm
для примера указал два разных файла, на самом деле данные генерируются в одну постоянную страницу, скажем index.htm

Независимо от события нужно из текста этих страниц обязательно вытащить и расположить упорядоченно:
имя: Василий Пупкин
город: Москва
район: Бутово
возраст: 25

В будущем хотелось бы данные (в виде переменных) сохранять в текстовый файл или в БД mysql, без разницы. Это уже другой этап.
Ответы (3)
ava
AlexZagr | 20.05.2013, 16:19 #
Вы бы сильно упростили себе жизнь, если бы пары имя=значение отделялись чем-то кроме пробела, а то в "Василий Пупкин активность" нужно догадаться что является названием параметра, а что его значением, как в "казнить нельзя помиловать".

В общем виде это выглядит так:

use strict;

my $text = 'имя=Василий Пупкин активность=on-line город=Москва район=Бутово возраст=25';
$text =~ s/\s([^ =]+=)/\n$1/g;
my @array = split(/\n/, $text);
my %state;
foreach (@array){
    my ($name, $value) = split(/=/);
    $state{$name} = $value;
}

use Data::Dumper;
print Dumper %state;


Можно сразу в БД закидывать.
ava
noobperl | 20.05.2013, 17:31 #
alezzz,
Спасибо, попробую реализовать ваш пример.
А по поводу упрощения жизни - дело в том, что текст не я генерирую, а сторонний чужой сервер, на которй я близко не могу повлиять.
Я просто при вел пример как бы...
В мыслях было использовать слово "активность" как "светофор красный"... Если слова "активность" нету в цепочке поиска, то следущее слово "город" также срабатывает как светофор. Всё что до "светофора" - будет входить в "имя". Как то так... Но как это реализовать через RW - не знаю.
ava
DProf | 23.05.2013, 19:21 #

my ( $name, $act, $town, $region, $age);
my $text = 'имя=Василий Пупкин активность=on-line город=Москва район=Бутово возраст=25';

if    (
        $text =~ m/
            ^имя=        (?<name>.+)\s*
            активность=    (?<act>.+)\s*
            город=        (?<town>.+)\s*
            район=        (?<region>.+)\s*
            возраст=    (?<age>.+)\s*$
            /x
    )
{
    ( $name, $act, $town, $region, $age) = ( $+{name},$+{act},$+{town},$+{region},$+{age} );
}
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить