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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить модуль XML::XPath в ActivePerl? 
:(
    Опции темы
Satell
Дата 2.1.2008, 14:35 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Поставил Active Perl 5.8.8 под винды, при выполнении скрипта ошибка
Can't locate XML::XPath, нету такого модуля
скачал его со span.org, как его установить в мой дистрибутив, просто скопировать в папку XML или нет?
и оттуда ли я его скачал?

я просто скопировал модуль в папку XML, прога выдаёт ошибку Undefined subroutine &main::xmlescape line32


Код

#!/usr/bin/perl -w -Ilib

use strict;

# модули для получения информации из XML и доступа к
# веб-ресурсам, соответственно
use XML::XPath;
use LWP::UserAgent;

# верхняя и нижняя части страницы
#require "./page-template.pl";

# библиотека функций. например для обработки полей присланной
# формы
#require "./xml-lib.pl";

print "Content-Type: text/html;charset=utf-8\n\n";

#print &header;

# обработка полей формы
#my %params = &parse_form;


#my $host  = $params {'host'};
#my $query = $params {'query'};

my $host='riabinoviy.info';
my $query='шансон';

#замена символов на ескейп последовательности, возможно библа xml встала неправильно
my $query_esc = xmlescape($query);
my $host_esc  = xmlescape($host);

#тут узнать что делает
$host =~ s[^http://|www\.][];

# готовим запрос
my $ua = LWP::UserAgent->new;
$ua->agent("Bond, James Bond/0.07");

my $exit  = 1;

$exit = 0 if $ENV{'REQUEST_METHOD'} eq 'POST';

my $reqid = undef;
my $page  = 0;
my $found = 0;
my $pages = 20;

print "<table width='100%'><tr><td width='16%'/><td>";

#  мы должны получить место сервера в выдаче по некому запросу.
# делаем запрос по десять ссылок на страницу и запрашиваем 50
# страниц. при нахождении сервера останавливаемся и выдаем его
# место в выдаче
while (not $exit and $page < $pages and $host)
{
    my $reqid_tag = '';
    $reqid_tag = "    <reqid>$reqid</reqid>\n\n"
      if (defined $reqid and $reqid);

    # XML запрос
    my $doc = <<DOC;
<?xml version='1.0' encoding='utf-8'?>
<request>
    <query>$query_esc</query>
    <page>$page</page>
    $reqid_tag
    <maxpassages>0</maxpassages>
    <groupings>
        <groupby attr='d' mode='deep' groups-on-page='10' docs-in-group='1' curcateg='-1'/>
    </groupings>
</request>
DOC

    my $req = HTTP::Request -> new
     # ( POST => 'http://xmlsearch.yandex.ru/cgi-bin/xmlsearch.pl' );
      ( POST => 'http://xmlsearch.yandex.ru/cgi-bin/xmlsearch.pl');
    $req -> content_type ('application/xml');
    $req -> content ("$doc");

    # отправляем запрос
    my $response = $ua -> request ($req);

    if ( $response->is_success )
    {
        #print $response -> content;
        
        my $doc = XML::XPath -> new ( xml => $response -> content );

        # пробуем получить ошибку
        my $error = $doc -> findvalue ('/yandexsearch/response/error');
        if ("$error")
        {
            print "Возникла следующая ошибка: ", $error, "<br/>\n";
            $exit = 1;
            last;
        }
        
        $reqid = $doc -> findvalue ('/yandexsearch/response/reqid');

        my $pos = 1;
        my @nodes = $doc -> findnodes ('/yandexsearch/response/results/grouping/group/doc/url');
        foreach ( @nodes ) 
        {
            # если URL начинается с имени хоста, выходим из цикла
            if ( $_ -> string_value =~ m/^http:\/\/(www\.)?$host/i )
            {
                $found = $pos + $page * 10;
                $exit = 1;
                last;
            }
        
            $pos++;
        }
    
        $page++;
    }
  
    else
    {
        print "внутренняя ошибка сервера\n";
        $exit = 1;
    }

}

# если что-то найдено, то выводим результат 

if ($found)
{
    print "<p>сайт &laquo;$host&raquo; находится на месте № $found по запросу &laquo;$query&raquo;</p><p>Попробуйте узнать позицию другого сайта!</p><br/>\n";
}
elsif (defined $host and $host)
{
    print "<p>сайт &laquo;$host&raquo; находится далее, чем на ". $pages*10 ." месте в выдаче &laquo;Яндекса&raquo; по запросу &laquo;$query&raquo;</p><p>Попробуйте узнать позицию другого сайта!</p><br/>\n";
}
else
{
    print "<p>Узнайте позицию сайта в выдаче &laquo;Яндекса&raquo; по запросу!</p>";
}

print "</td></tr></table>";

# выводим форму с запросом.
print <<FORM;
<form method='POST' accept-charset='utf-8'>
    <table width='100%'>
        <tr>
         <td width="16\%"/>
            <td width="75\%">
                <table>
                    <tr>
                        <td><label for='query'>Запрос:</label></td>
                        <td><input type='text' name='query' id='query' value='$query_esc'/> &nbsp; Пример: волшебные травы</td>
                    </tr>
                    <tr>
                        <td><label for='host'>?Имя сервера:</label></td>
                        <td><input type='text' name='host' id='query' value='$host_esc'/> &nbsp; Пример: narcom.ru</td>
                    </tr>
                    <tr>
                        <td/>
                        <td><input type="submit" value="??скать!"/></td>
                    </tr>
                </table>
            </td>
            <td width="9\%">
        </tr>
    </table>
</form>
FORM

# дописываем html
print &footer;


Это сообщение отредактировал(а) Satell - 2.1.2008, 14:38
PM MAIL   Вверх
nitr
Дата 2.1.2008, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



1) Читайте документацию
2) Здесь есть FAQ по поводу установки
3) Поищите вопросы по форуму с текстом ppm, как раз недавно обсуждали это, и ответ был на 5

P.S.: чтобы не быть голословным http://forum.vingrad.ru/act-Attach/type/post/id-494399.html +почитать http://forum.vingrad.ru/forum/topic-189158...dbd--mysql.html , ну вам только нужен "искомый модуль". Успеха!

Да и ещё: настройте свой "сайт" http://www.seochampion.ru/ , а то выводит index каталога smile
Цитата

 Parent Directory        02-Jan-2008 08:42      -  
 _private/               31-Dec-2007 09:00      -  
 cgi-bin/                02-Jan-2008 09:57      -  
 error_log               02-Jan-2008 18:52   4.5M  
 google.html             02-Jan-2008 18:44     0k  
 google.php              02-Jan-2008 17:32     5k  
 grabgoog.php            02-Jan-2008 13:15     2k  
 images/                 31-Dec-2007 09:00      -  
 license.txt             31-Dec-2007 09:46    15k  
 logcomment.txt          31-Dec-2007 16:43     1k  
 pos.php                 02-Jan-2008 13:13     1k  
 postinfo.html           31-Dec-2007 09:00     2k  
 readme.html             31-Dec-2007 09:47    11k  
 rip.txt                 02-Jan-2008 18:44    26k  
 seochampion/            02-Jan-2008 18:59      -  
 temp/                   02-Jan-2008 18:55      -  
 wp-admin/               31-Dec-2007 09:29      -  
 wp-app.php              31-Dec-2007 09:47    36k  
 wp-atom.php             31-Dec-2007 09:47     1k  
 wp-blog-header.php      31-Dec-2007 09:47     1k  
 wp-comments-post.php    31-Dec-2007 09:47     3k  
 wp-commentsrss2.php     31-Dec-2007 09:47     1k  
 wp-config.php           31-Dec-2007 14:56     1k  
 wp-content/             31-Dec-2007 09:30      -  
 wp-cron.php             31-Dec-2007 09:47     1k  
 wp-feed.php             31-Dec-2007 09:47     1k  
 wp-includes/            31-Dec-2007 09:46      -  
 wp-links-opml.php       31-Dec-2007 09:47     2k  
 wp-login.php            31-Dec-2007 09:47    16k  
 wp-mail.php             31-Dec-2007 09:47     6k  
 wp-pass.php             31-Dec-2007 09:47     1k  
 wp-rdf.php              31-Dec-2007 09:47     1k  
 wp-register.php         31-Dec-2007 09:47     1k  
 wp-rss.php              31-Dec-2007 09:47     1k  
 wp-rss2.php             31-Dec-2007 09:47     1k  
 wp-settings.php         31-Dec-2007 09:47     9k  
 wp-trackback.php        31-Dec-2007 09:47     3k  
 xmlrpc.php              31-Dec-2007 09:47    56k  


Это сообщение отредактировал(а) nitr - 2.1.2008, 21:15


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


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

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


 




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


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

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