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

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

Thread Status:
Not open for further replies.
  1. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    ставь active perl -- погугли для скачки
    создаешь файл с расширением .pl - это будет скрипт
    птом или кликай два раза по нем и выстави задержку на гашение
    или пуск - выполнить - cmd и там уже путь к скрипту и запускай
     
  2. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Есть файл
    wqrwqretret
    idiot:1
    neidiot:2
    dgdfbfcgdfgdfg
    idiot:3
    neidiot:5
    asfsafsdf
    и т.д.
    Мну хочет вытащить инфу после idiot и neidiot и записать в файл в виде
    1:2
    1:2
    1:2
    и т.п.

    значитс грузится этот текст в массив @array
    Потом с помощью foreach перебирается каждый елемент, если в строке $_ найдено idiot или neidiot, то записывается в переменную, дальше мне нужно если оба эти элемента присутсвуют вывести их, но тут то и загвоздка, ведь присутсвует только один элемент...Вообщем код:


    foreach(@array) {
    chomp($_);
    if($_=~m/регулярка/ig) { $idiot=$_}
    if($_=~m/регулярка/ig) { $neidiot=$_}
    }


    Все свои бредовые идейки потер ибо не получается :)
     
  3. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Всем привет! Всех с новым годом! Помогите с литературой по перл? пхп освоил теперь вот хочу перл освоить помогите!!
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Ты отчеты пинча на логины и пароли парсить пытаешься что ли?
     
    _________________________
  5. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    насчет литературы:
    можешь читать ченить типо perl за 24 часа и потом уже по неообходимости инфу добывать в нете или perl доке по модулям различным и фичам

    или читай сразу большие и толстые книги у Кристиансона хорошие
     
  6. TheSoul

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

    Joined:
    12 Nov 2007
    Messages:
    83
    Likes Received:
    35
    Reputations:
    0
    Я советую вот эту почитать .
    Perl. Специальный справочник
    Всё очень хорошо описано...
     
  7. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Помогите с многопточностью

    Каждая нить выполняет один и тот же запрос, т.е. я поставил 5 потоков и у меня вместо:
    1,2,3,4,5
    Выполняется
    1,1,1,1,1,2,2,2,2,2....
    Подскажите поажлуйста как исправить :)
     
  8. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Code:
    use LWP::Simple;
    use strict;
    use threads;
    use threads::shared;
    
    my $start : shared=1;
    my $finish : shared=10;
    my $potok=5;
    my @trl;
    
    for(0..$potok-1) {$trl[$_] = threads->create(\&pars);}
    for(@trl) { $_->join; }
    
    
    sub pars {
    	while ($start <= $finish) {
    		my $url = undef;
    		{lock($start); $url ="url/$start/"; ++$start;}
    		print "Search on URL: $url\n";
    		my $response=get $url;
    		
    	}
    } 
    
     
    _________________________
    2 people like this.
  9. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Теперь он очень быстро получает странички (Выводит на стдоут search on url: блаблабла
    и тут начинает висеть (даже когда 5 потоков) + ничего не пишет в файл, минуты через 3 развисает и едет дальше...
    Таск менеджер показывает бездействие системы 98%!!

    PHP:
    my $start shared=20;
     
    my $finish shared=100;
     
    my $potok=5;
     
    my @trl;

     for(
    0..$potok-1) {$trl[$_] = threads->create(\&pars);}
     for(@
    trl) { $_->join; }

     
    sub pars {
     while (
    $start <= $finish){
     
    my $url=undef;
     {
    lock($start); $url ="url/$start/"; ++$start;}
     print 
    "Search on URL: $url\n";
     
    my $response=get $url;
     
    my @massiv=$response=~m/регулярка/ig;
     
    open(TEXT,">>text.txt");
     foreach (@
    massiv) { print TEXT $_ "\n"; }
     }
     }
     
    #869 $p01nt, 5 Jan 2009
    Last edited: 5 Jan 2009
  10. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    С вопросом который выше - разобрался(проблема была в дедике)), но у меня такое ощущение ... то что парсер не пашет или пашет не правильно :( Он качает 100 страниц, а парсит из них только 1! Потом опять 100, парсит одну.
    Код выше.
     
  11. or1

    or1 Banned

    Joined:
    7 Sep 2008
    Messages:
    36
    Likes Received:
    4
    Reputations:
    0
    подскажите плз где найти можно Encoding and Decoding для перла ,
    Encoding and Decoding URLs via perl (including decimal to hex conversion)

    описание:
    http://glennf.com/writing/hexadecimal.url.encoding.html
     
    #871 or1, 7 Jan 2009
    Last edited: 7 Jan 2009
  12. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    or, обусификация? О_О или регулярные выражения? что то я тебя не понял :(
     
  13. or1

    or1 Banned

    Joined:
    7 Sep 2008
    Messages:
    36
    Likes Received:
    4
    Reputations:
    0
    есть же вообще Encoding and Decoding URLs via perl "перла "или нет так почему такая статья существует ,прочетать можно тут и вообще не надо отвечать я сам разобрался

    Encoding and Decoding URLs via perl (including decimal to hex conversion)
    http://glennf.com/writing/hexadecimal.url.encoding.html
     
  14. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Как подключить модуль к Perl не устанавливая его?
    Проблема с Curl, в скрипте:
    use WWW::Curl::easy;
    Качаю Curl с cpan ( curl.pm) в ту же папку где скрипт и заменяю строчку
    use WWW::Curl::easy;
    на
    use Curl;
    но выдает ашипку:
    Как пропавить?

    P.S. устанавливать модуль нельзя :(
     
    #874 $p01nt, 8 Jan 2009
    Last edited: 8 Jan 2009
  15. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    А папка со скриптом в списке @INC есть?)

    А чё так?

    P.S. Зачем вообще этот модуль тебе?
     
    _________________________
  16. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Обьясняю ситуацию, пишу скрипт автореггер, к нему нужно прикрутить антикапчу, скрипт антикапчи использует cURL, мой скрипт будет запускатся на множестве дедиков, на каждый ставить курл - нет желания.
    Kaimi как правильно добавить папку?
     
  17. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    Как вообще поставить cURL ? вообще ни как не хочет ставиться :(
     
  18. w.u.n.

    w.u.n. Member

    Joined:
    13 Dec 2008
    Messages:
    40
    Likes Received:
    26
    Reputations:
    1
    как вариант: lwp юзать
     
    1 person likes this.
  19. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    помогите плиз написать скрипт который бы удалял половину строки после символа ; включая его самого и складывал бы результат в отдельный файл, я вот сам попробовал но чета не так получается:

    Code:
    open(DAT, "gnu1.txt") || die("error1!");
    @data=<DAT>;
    close(DAT);
    
    open(FILE, ">>gnu2.txt") || die("error2!");
    foreach $line (@data)
         {
         my($a,$b) = split(/;/, $line);
         print FILE  "$a;$b\n";
         }
    close(FILE);
     
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Попробуй
    Code:
    open(DAT, "<gnu1.txt") || die $!;
    @data=<DAT>;
    close(DAT);
    
    open(FILE, ">>gnu2.txt") || die $!;
    foreach(@data)
         {
    	 $_=~ /(.+);/ ? print FILE $1."\n" : ();
         }
    close(FILE);
    
     
    _________________________
Thread Status:
Not open for further replies.