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

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

Thread Status:
Not open for further replies.
  1. [none]

    [none] Banned

    Joined:
    22 Nov 2009
    Messages:
    83
    Likes Received:
    26
    Reputations:
    -6
    не работает так, out.txt пустой.
    Code:
    $_=~ /\$slovo\[\]='(.+?)'/;
    цель:удалить - $slovo[]='' везде где это встречается.
     
    #1681 [none], 6 Nov 2010
    Last edited: 6 Nov 2010
  2. dpe_x

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

    Joined:
    8 Sep 2010
    Messages:
    155
    Likes Received:
    35
    Reputations:
    14
    я бы сделал так если в другой файл записать надо

    =~ /(')([A-Za-z]{1,10})'/
    print OUT $2."\n";
     
  3. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    [none], если у тебя в папке со скриптом имеется файл "dir.txt", который содержит следующее:
    Code:
    $slovo[]='lololol'
    $slovo[]='agagag'
    $slovo[]='авыаы'
    то вышепредставленный мною скрипт создаст файл "out.txt" с содержанием:
    Code:
    lololol
    agagag
    авыаы
    проверено и уже перепроверено...
    Смысл скрипта в том, чтобы из каждой строчки вытащить часть текста, стоящую между $slovo[]=' и ', а не в том, чтобы удалить $slovo[]='...', помоему одной заменой не получится это сделать, но для примера файла "dir.txt", который ты выложил мой вариант более оптимальный...
     
  4. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    Как сделать чтобы показывало прогресс в программе. а то чекер запустил а сколько ждать хз.
    пример
    [​IMG]
     
  5. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    заводишь счетчик отчеканных проксей, после каждоко check'а счетчик прочеканных делишь на кол-во всех проксей, умножаешь на 100, в конце дописываешь '%' и выводишь, допустим через каждые 10 проксей
    типа:
    PHP:
    $all 16845;#допустим, у нас 16845 проксей:)
    $checked 0;#счетчик
    #тут код реализации
    check($proxy);#функция - чекер(в ней счетчик должен увеличиваться! $checked++)
    $result = ($checked/$all) * 100;#вычисляем...
    $result "Progress: ".$result."%";#...формируем...
    print $result;#...и выводим
     
    #1685 SHiNiGaMi, 8 Nov 2010
    Last edited: 8 Nov 2010
  6. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    хорошо. но когда нужно отчекать аки какогото сайта. все время в рунчую считать количество?
    можно чтобы дельфи сам подщитывал сколько всего аков. когда загружает их в масив
     
  7. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    2 de_angelo
    flush();
    причем тут Delphi?
    чтобы получить кол-во проксей в массиве $proxy, используй $all = $#proxy;
     
    #1687 SHiNiGaMi, 9 Nov 2010
    Last edited: 9 Nov 2010
  8. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    извиняюсь. просто паралельно осваиваю дельфи и перл. и оговорился
    . почемуто вылазит ошибка и потоки прирываются
    [​IMG]
    мой код
    PHP:
    $all = @mails;
    $checked 0;#счетчик
    код
    check
    (@mails);
    $result = ($checked/$all) * 100;
    $result "Progress: ".$result."%";
    print 
    $result;
     
  9. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    единственное что я разобрал со скрина, это то, что поток прерван потому что встретил необъявленную функцию
     
  10. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    PHP:
    my  $checked 0;#счетчик;
    my @mails shared lf($mails_file);

    my $all = @mails;
           
    threads->new(\&main) for .. $threads;
    $_->join for threads->list;
    sub main
    {
        
    my $ua LWP::UserAgent->new(timeout => 35,
                                     
    cookie_jar => new HTTP::Cookies,
                                     
    agent => agent());
        while(@
    mails)
        {
           
    код


            

            
    if ($resp =~ "Redirecting... If browser do not redirect you automaticaly")
            
            {
           
    код
            
    }
            else
            {
                
    код
            
    }

    $checked++; 
      
        }
          
    my $result = ($checked/$all) * 100;#вычисляем... 
    $result "Progress: ".$result."%";#...формируем... 
    print "$result\n";#...и выводим 

    }
    показывает все вермя 1.5568368239% или 3.54390929%
    и он после каждой строки идет. как сделать чтобы он фиксировано висел под строками как на скрине
    [​IMG]
     
    #1690 mazaxaka, 9 Nov 2010
    Last edited: 9 Nov 2010
  11. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    ты вначале объявил $checked как my, значит в функции ее не видно, и еще она не объявлена как shared.
    на сколько я знаю, никак.
     
  12. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    если обявлять просто $checked тогда 3.54390929% оно так и есть, 1\105 * 100
    если как му $checked тогда постоянно ноль.
    нои когда обявляеш $checked то значения только 1.5568368239% или 3.54390929% до 100% не доходит.
    можеш пример рабочего кода показать?

    хм.. ну скрин одного софта который продают. кактоже сделали)
     
  13. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    на счет того, как сделать строку внизу
    Code:
    print "[ + ] ".$acc." - ".$pass."\nProgress: ".$result."%\r" 
    и все это в цикле
     
  14. SHiNiGaMi

    SHiNiGaMi Banned

    Joined:
    3 Jan 2010
    Messages:
    382
    Likes Received:
    55
    Reputations:
    15
    PHP:
    #!usr/bin/perl
    $checked 0;
    @
    arr qw(one two three four five six seven eight nine ten);
    $all = @arr;
    for 
    $line(@arr)
    {
      print 
    $line;
      
    $checked++;
      
    $prog = ($checked/$all) * 100;
      print 
    "  Progress is ".$prog."%\n";
    }
    а насчет скрина они либо сфоткали только часть выполненной программы, либо они делали системную перерисовку консоли, но тогда бы это жутко мерцало

    UP: насчет фиксации прогрессбара: т.к. в консоли windows 25 строк, то можно сделать "постраничный" вывод циклом, т. е. 24 строки выводить прокси а 25-ой строкой вывести Progress.
    PHP:
    #!usr/bin/perl
    $checked 0;
    @
    arr 0..100;
    $all = @arr;
    $i 0;

    sub check
    {
      
    $checked++;
    }

    for 
    $line(@arr)
    {
      
    check();
      if(
    $i<24)
      {
        print 
    $line."\n";
        
    $i++;
      }
      else
      {
        
    $prog = ($checked/$all) * 100;
        print 
    "Progress is ".$prog."%\n";
        
    $i 0;
      }
    }
    print 
    "Complete";
    как-нибудь так
     
    #1694 SHiNiGaMi, 9 Nov 2010
    Last edited: 9 Nov 2010
  15. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    спасибо. то чно нужно..
    теперь осталось заставить счетчик считать так как жуно)
     
  16. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    то SHiNiGaMi пролистай 1 страницу назад gisTy подсказал очень удобный способ
     
  17. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    Code:
     my $result = ($checked/$all) * 100;#вычисляем...  
    $result = "Progress: ".$result."%";#...формируем...  
    print "$result\n";#...и выводим 
    попробуй перенести этот кусок внутрь while после checked++;
     
  18. toX1k

    toX1k New Member

    Joined:
    18 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    -1
    есть папка, нужно все файлы находящиеся в ней переименовать в 1.txt, 2.txt и т.д.
    вот мои наработки, но ничего не выходит:
    Code:
    #!usr/bin/perl
    
    opendir CD, "/home/jorik/111";
    @a = readdir CD;
    $b = '1.txt';
    foreach $file (@a)
    {rename ($file, "$b++"); }
     
  19. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    пробывал всеравно бред.
    полное количество строк щитает отлчно. а то с щетчиком проблема
    сдедал print $checked , постоянно 0-1-2 больше не поднимается

    PHP:
    my $checked 0;#счетчик;
    sub main
    {

        
    код
        
    while(@mails)
        {
            if(
    $proxy_mode eq 'ON')
            {
                
    until(proxy($ua)){}
            }
          
            
    код авторизация на сайте

           
     my $result 
    = ($checked/$all) * 100;#вычисляем...
        
    $result "Progress: ".$result."%";#...формируем... 

            
    if ($resp =~ "Redirecting... If browser do not redirect you automaticaly")
            
            {
     
    код

      
    print "[ + ] $login;$pass;money=$money\n$result\r";
                 
    $checked++; 
                
                
            }
            else
            {
                
    $checked++; 
                print 
    "[ - ] $login;$pass\n$result\r";
                
            }

        print 
    $checked;
      
        }
     
  20. BlackWinG

    BlackWinG New Member

    Joined:
    20 Jun 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вопрос тупой...Написали мне скрипт на перле, сказали можно запустить через хостинг - подскажите хостинг с перлом и как его запускать
     
Thread Status:
Not open for further replies.