[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Zhenek

    Zhenek Banned

    Joined:
    9 Nov 2007
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Я ввожу он пишет,что ненайден.

    Мне он нужен для работы скрипта.
    Скрипт чекает майлы на валидность (mail:pass)
    А быз данного модуля отказывается работать.
     
  2. Tarigonik

    Tarigonik Member

    Joined:
    9 Dec 2007
    Messages:
    12
    Likes Received:
    8
    Reputations:
    0
    Не пойму в чем проблема, модуль можно установить даже через GUI. Пуск > ActivePerl > Perl Package Manager, выбираешь в общем списке нужный модуль и устанавливаешь.
    Ну или как вариант через CPAN (в консоли): cpan; install Mail::pOP3Client
     
    1 person likes this.
  3. Zhenek

    Zhenek Banned

    Joined:
    9 Nov 2007
    Messages:
    0
    Likes Received:
    2
    Reputations:
    0
    Так и ненаучился... написал свою прогу для чека и живу спокойно. всем спосибо.
     
  4. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    сорри за флуд
    это ты на низкоууровневых сокетах написал, да?
     
    1 person likes this.
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Есть диапазон страниц, нужно считать контент каждой и закинуть данные в файлик. Есть функция для считывания и скидывания контента. Как реализовать многопоточность, чтобы скрипт сам делил между потоками диапазон страниц и затем обрабатывал их?
    Мануалы почитал, но толком не разобрался.
     
    _________________________
  6. C!klodoL

    C!klodoL Elder - Старейшина

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    Code:
    #!/usr/bin/perl
    
    use threads;
    use threads::shared;
    my $num : shared; #расшариваем переменную
    
    $thr = 2;
    
    for(0..$thr) {
       $trl[$_] = threads->create(\&get);
    }
    for(0..$thr) {
       $trl[$_]->join;
    }
    
    sub get
    {
       while (1) {
            { lock($num); #блокируем переменную перед увеличением значения
             $num++; }
             print "$num\n";
             #ну и тут собственно делать запрос
       }
    }
    залил ман про нити в перл, там есть про расшаривание данных http://slil.ru/25284163
     
    #286 C!klodoL, 25 Dec 2007
    Last edited: 25 Dec 2007
    2 people like this.
  7. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Это понял, а диапазон от n до n1 как разбить на x потоков?
     
    _________________________
  8. C!klodoL

    C!klodoL Elder - Старейшина

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    оно само будет делится между потоками, каждый поток будет делать +1 к номеру страницы, $thr = 2; - количество потоков

    вот в качестве примера простенький парсер имен файлов на слил.ру

    Code:
    #!/usr/bin/perl
    
    use threads;
    use threads::shared;
    use LWP::Simple;
    my $num : shared;
    
    $thr = 2;
    $num = 25284163;
    
    for(0..$thr) {
       $trl[$_] = threads->create(\&gets);
    }
    for(0..$thr) {
       $trl[$_]->join;
    }
    
    sub gets
    {
       while (1) {
             { lock($num);
             $num++; }
             $cont = get("http://slil.ru/$num");
             ($content) = $cont =~ /href="\/.+\/.+\/(.+)"/;
             print $content."\n";
       }
    }
     
    #288 C!klodoL, 25 Dec 2007
    Last edited: 25 Dec 2007
    3 people like this.
  9. 5p4x2kn3t

    5p4x2kn3t New Member

    Joined:
    6 Sep 2007
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Вопрос: Допустим, у меня в текстовой переменной - имя класса. Как обратиться к самому классу по этой переменной?
     
  10. C!klodoL

    C!klodoL Elder - Старейшина

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    самое простое.. eval("use $mod"); и тд
     
    1 person likes this.
  11. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Есть код

    Code:
    use strict;
    use HTTP::Request::Common;
    use LWP::UserAgent;
    use HTTP::Cookies;
    ...............................
    my $ua  = LWP::UserAgent->new;
    my $req = HTTP::Request->new('GET', 'https://mysite.com');
    my $res2 = $ua->request($req);
    $res2 = $res2->as_string;
    
    Перл пишет в ответ
    500 Can't locate object method "new" via package "LWP::protocol::https::Socket"
    Пытаюсь поставить OpenSSL, пишет
    Can't use string ("SSL.pm") as a HASH ref while "strict refs" in use at C:/Perl/
    lib/ExtUtils/Install.pm line 996.

    Что делать?
     
    _________________________
  12. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> Что делать?

    установить модуль Crypt::SSLeay
     
  13. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    вот чекер прокси
    sub testProxy
    {
    $env="http://nntime.com/textenv.pl";
    #$env="http://samair.ru/cgi/textenv.pl"

    $s=getPage($env,"http://".$_[0]);
    ($adr,$port)=split(/:/,$_[0]);
    if($s!~/REMOTE_ADDR=$adr/) {return 0}; #bad or transparent proxy
    if($s=~/HTTP_VIA/) {return 0;} #anonymous or transparent proxy
    if($s=~/HTTP_X_FORWARDED_FOR/) {return 0;} #anonymous or transparent proxy
    return 1; #eleet proxy
    }

    sub getPage
    {
    use LWP::UserAgent;
    $ua=LWP::UserAgent->new;

    #$ua->proxy(http=>$_[1]);
    $ua->timeout(10);

    $ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    $req=HTTP::Request->new(GET=>$_[0]);

    $res=$ua->request($req);

    if($res->is_success)
    {
    #print($res->content);
    return $res->content;
    }
    else
    {
    #print "Error!\n";
    }
    }


    sub getPage а мне нужно что б он чекел соксы 4 и 5 и https и разбрасывал по отдельным файлам все что начекал да еще и многопоточный был
    как я могу это сотворить еси можно плизз готовое решение я не силен в перле только регулярки написать могу и больше ничего :confused:
     
    #293 satana8920, 8 Jan 2008
    Last edited: 8 Jan 2008
  14. vorishka

    vorishka Elder - Старейшина

    Joined:
    3 Mar 2005
    Messages:
    309
    Likes Received:
    43
    Reputations:
    22
    Ночи доброй! Думаю что перл =/ Но не уверен. Сам перл полностью не знаю.
    Не усовершенствуете скриптик, до того что бы определённому нику не слалось "/ctcp"

    Code:
    massctcp {
      var %i = 1
      while (%i <= $nick(#,0)) {
        set %nick $nick(#,%i)
        /timer $+ %i 1 %i /ctcp %nick /msg $me version
        unset %nick
        inc %i
    } } }
     
    1 person likes this.
  15. satana8920

    satana8920 Палач Античата

    Joined:
    22 Sep 2006
    Messages:
    396
    Likes Received:
    138
    Reputations:
    6
    Народ ваще как вот сокс организовать? например по джабберу
     
  16. dinar_007

    dinar_007 Мадемуазель

    Joined:
    18 Jan 2005
    Messages:
    1,019
    Likes Received:
    770
    Reputations:
    97
    Это не перл... Это скорее скриптовый язык какой-нибудь проги, наверное Mirc...

    В Mirc скриптах разбираюсь очень-очень плохо... Но думаю (наподобии Си), что нужно условие добавить в цикл:

    Code:
    if (%niсk = нужный ник) {
    вот тут надо написать что не надо слать
    }
    Лучше-бы в тему языка Си запостил... Что-то схожее у Mirc скриптов с ним есть... while есть, это цикл...

    :)
     
    #296 dinar_007, 15 Jan 2008
    Last edited: 16 Jan 2008
  17. cash$$$

    cash$$$ Banned

    Joined:
    6 Jan 2008
    Messages:
    385
    Likes Received:
    246
    Reputations:
    10
    Какие права нужно выставлять файлам pl, cgi?
     
  18. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    755
    -rwxr-xr-x
     
  19. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Можно и 777 :d
     
  20. Spyder

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    Когда ты запускаешь в браузере как cgi скрипт он может ругаться на такие права =\
     
Thread Status:
Not open for further replies.