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

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

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

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    а почему ж нельзя и маленькие буквы сделать? Ниче сложного тут нету:
    Code:
    sub cyr
    {
    	$phrase = shift;
    	$phrase =~ y/А-яЁё/\x80-\xaf\xe0-\xf1/;
    	return $phrase;
    }
    
    print cyr('АБВГДЕЁЭЮЯабвгдеёэюя');
     
  2. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    да я как бы в курсе что можно =) просто там большими
     
  3. C!klodoL

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

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    как прикрутить к IO::Socket прокси?
    Code:
    #! usr/bin/perl
    
    use IO::Socket;
    
    my $server = "pop3.mail.ru";
    my $port = "110";
    my $socket = new IO::Socket::INET(PeerAddr => $server, PeerPort => $port, Proto => "tcp"); 
     
    1 person likes this.
  4. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    вот со статьи вырезал скрипт который берет проксю коннектится к неи и отправляет пакет =) юзай lwp там проккся в 1 строку

    Code:
    #!/usr/bin/perl
           use IO::Socket;
    
           # открываем файл
           open (base, "proxy.lst") || die "Error! Can't open proxy list\n";
           while ( <base> )
           { @proxy = <base>; } # считываем данные в масив
    
           $z=chomp(@proxy); # кол-во записей в файле
           for ($g=0; $g < $z; ){
           n:
           $g++;
           $path="http://www.fitl.biz/ru/bs/b.php?cmd=go&from=44257&said=34315";
           chomp($string = @proxy[$g]); #записываем запись в строку и убираем
           # символ перевода каретки
           @conn=split(/:/,$string); # превращаем с список строку данных
           # разделенных двоеточием
           $server = @conn[0]; # адрес прокси
           $port = @conn[1]; # порт прокси
    
           $socket=IO::Socket::INET->new( PeerAddr => $server, PeerPort => $port, Photo => tcp)
           or goto n;
    
    
           $i++;
           system("cls ; clear");
           print "sent : $i";
    
           print $socket "GET $path HTTP/1.1\n";
           print $socket "Host: $server\n";
           print $socket "Accept: */*\n";
           print $socket "Http-Referer: http://www.rushteam.h1.ru/index.htm\n";
           print $socket "User-Agent: Internet Explorer 6.0\n";
           print $socket "Pragma: no-cache\n";
           print $socket "Cache-Control: no-cache\n";
           print $socket "Connection: close\n\n";
           }
    
     
    1 person likes this.
  5. C!klodoL

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

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    LWP это по http get и post запросы, мне надо tcp - соединение, как обычный сокет, только через прокси, накидайте пожалуйсто примерчек, а то в гугле онли http через проксю
     
  6. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    вот те дока по lwp и io --- может поймешь глупость посл вопроса пример оттуда

    http://slil.ru/24578629
     
  7. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    perldoc IO::Socket::Socks
     
    1 person likes this.
  8. Bars_TT

    Bars_TT New Member

    Joined:
    8 Jul 2007
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    посоветуйте, грамотную литературку с примерами и т.д. Для изучения перла (как локального приложения)
     
  9. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Bars_TT, книжек много, но не могу не посоветовать Perl Cookebook, неплохо для новичков.
     
  10. C!klodoL

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

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    Освой Самостоятельно Perl за 24 часа.pdf эта книжка неплохая имхо, по крайней мере мне нравится
     
    1 person likes this.
  11. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    само название книги говорит за себя... невозможно выучить язык такого уровня за 24 часа, синтаксис - да, язык - нет.
     
  12. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    имхо это гавно...
     
  13. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    единственная книга по перлу, которая мне пригодилась при изучении этого языка - "Перл: специальный справочник. Холзнер С.". ее можно легко найти в pdf-формате..
     
    #53 Digimortal, 12 Jul 2007
    Last edited: 12 Jul 2007
  14. cylaaaan

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

    Joined:
    31 Aug 2006
    Messages:
    0
    Likes Received:
    44
    Reputations:
    8
    Такая проблема...
    решил сделать Icq бот на Perl'е

    посмотрел рунет, нашел сорс скрипта...
    http://www.security-teams.net/board/index.php?showtopic=4435
    и возник такой вопрос в обработке входящих данных с другого номера icq:

    PHP:
    sub message_callback {
     
    local($cmd$params$result);
     
    local $result "";
     
    local($client$uin$msg) = @_;

     if((
    $cmd$params) = $msg =~ /^\!([^\ ]+) (.+)$/)
     {
       
    $result exists($functions{$cmd}) ? $functions{$cmd}($params) : "";
       
    $client->send_im($uin$result) if $result;
     }
    }
    В этом скрипте у меня два параметра, тоесть, боту вводишь например !weather Москва,
    Но мне нужно что бы вводилось три и более параметров...

    Основная проблема у меня в
    PHP:
     if(($cmd$params) = $msg =~ /^\!([^\ ]+) (.+)$/)
    Так как я только начинаю в программировании, еще плохо разбираюсь, получилось примерно такое:


    PHP:
       if(($cmd$params1$params2) = $msg =~ /^\!([^\ ]+) (.+) (.+)$/)
     {
       
    $result exists($functions{$cmd}) ? $functions{$cmd}($params1) : $functions{$cmd}($params2);
       
    $client->send_im($uin$result) if $resultsleep(10);
       }  
    Помогите плз сделать третий и более параметр (пример: !weather Россия Москва)
     
  15. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    cylaaaan,
    по-моему проще всего использовать следующий алгоритм:
    1 получить строку, где будет комманда и ее параметры.. ( $string )
    2 разбить ее split'ом на отдельные слова и занести их в массив.. ( @params = split " ", $string;
    3 вытащить (shift'ом) нулевой элемент массива - в нем будет указана комманда.. ( $cmd = shift @params; )
    4 распознать комманду и передать массив с параметрами на нужный саб.. ( ну тут идет цепочка if - elsif - else , где мы вызываем соответствующий комманде саб, передавая массив @params в качестве параметров )
     
  16. cylaaaan

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

    Joined:
    31 Aug 2006
    Messages:
    0
    Likes Received:
    44
    Reputations:
    8
    спасибо, но я уже сам додумал скрипт ))
     
  17. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    Как совместить Tk и Threads ?
     
  18. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Code:
    use Tk;
    use threads;
    ;)
     
  19. null_access

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

    Joined:
    31 Jan 2005
    Messages:
    128
    Likes Received:
    6
    Reputations:
    0
    подскажите плз, как из консоли пересобрать перл с поддержкой threads?
    #perl -V выдаёт следующее:
    Code:
    Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
      Platform:
        osname=linux, osvers=2.6.12-12mdksmp, archname=i386-linux
        uname='linux n4.mandriva.com 2.6.12-12mdksmp #1 smp fri sep 9 17:43:23 cest 2005 i686 intel(r) xeon(tm) cpu 2.80ghz gnulinux '
        config_args='-des -Dinc_version_list=5.8.7 5.8.7/i386-linux 5.8.6 5.8.6/i386-linux 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.6.1 5.6.0 -Darchname=i386-linux -Dcc=gcc -Doptimize=-O2  -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fomit-frame-pointer -march=i586 -mtune=pentiumpro -fasynchronous-unwind-tables -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr -Dsitebin=/usr/local/bin -Dsiteman1dir=/usr/local/share/man/man1 -Dsiteman3dir=/usr/local/share/man/man3 -Dman3ext=3pm -Dcf_by=Mandriva -Dmyhostname=localhost -Dperladmin=root@localhost -Dcf_email=root@localhost -Dd_dosuid -Ud_csh -Duseshrplib'
        hint=recommended, useposix=true, d_sigaction=define
        usethreads=undef use5005threads=undef useithreads=define usemultiplicity=undef
        useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
        use64bitint=undef use64bitall=undef uselongdouble=undef
        usemymalloc=n, bincompat5005=undef
      Compiler:
        cc='gcc', ccflags ='-fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
        optimize='-O2 -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fomit-frame-pointer -march=i586 -mtune=pentiumpro -fasynchronous-unwind-tables',
        cppflags='-fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -I/usr/include/gdbm'
        ccversion='', gccversion='4.1.1 20060724 (prerelease) (4.1.1-3mdk)', gccosandvers=''
        intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
        d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
        ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
        alignbytes=4, prototype=define
      Linker and Libraries:
        ld='gcc', ldflags =' -L/usr/local/lib'
        libpth=/usr/local/lib /lib /usr/lib
        libs=-lnsl -lndbm -lgdbm -ldl -lm -lcrypt -lutil -lc
        perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
        libc=/lib/libc-2.4.so, so=so, useshrplib=true, libperl=libperl.so
        gnulibc_version='2.4'
      Dynamic Linking:
        dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux/CORE'
        cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
    
    
    Characteristics of this binary (from libperl):
      Compile-time options: PERL_MALLOC_WRAP USE_LARGE_FILES USE_PERLIO
      Locally applied patches:
            Mandriva Linux patches
      Built under linux
      Compiled at Sep  8 2006 20:02:03
      @INC:
        /usr/lib/perl5/5.8.8/i386-linux
        /usr/lib/perl5/5.8.8
        /usr/lib/perl5/site_perl/5.8.8/i386-linux
        /usr/lib/perl5/site_perl/5.8.8
        /usr/lib/perl5/site_perl
        /usr/lib/perl5/vendor_perl/5.8.8/i386-linux
        /usr/lib/perl5/vendor_perl/5.8.8
        /usr/lib/perl5/vendor_perl/5.8.7
        /usr/lib/perl5/vendor_perl/5.8.7/i386-linux
        /usr/lib/perl5/vendor_perl/5.8.6
        /usr/lib/perl5/vendor_perl/5.8.5
        /usr/lib/perl5/vendor_perl
        .
    
     
  20. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    да Ксурент .. ))) я серьёзно... при использовании их
    прут ерроренги.. =\
     
Thread Status:
Not open for further replies.