а почему ж нельзя и маленькие буквы сделать? Ниче сложного тут нету: Code: sub cyr { $phrase = shift; $phrase =~ y/А-яЁё/\x80-\xaf\xe0-\xf1/; return $phrase; } print cyr('АБВГДЕЁЭЮЯабвгдеёэюя');
как прикрутить к 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");
вот со статьи вырезал скрипт который берет проксю коннектится к неи и отправляет пакет =) юзай 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"; }
LWP это по http get и post запросы, мне надо tcp - соединение, как обычный сокет, только через прокси, накидайте пожалуйсто примерчек, а то в гугле онли http через проксю
вот те дока по lwp и io --- может поймешь глупость посл вопроса пример оттуда http://slil.ru/24578629
само название книги говорит за себя... невозможно выучить язык такого уровня за 24 часа, синтаксис - да, язык - нет.
единственная книга по перлу, которая мне пригодилась при изучении этого языка - "Перл: специальный справочник. Холзнер С.". ее можно легко найти в pdf-формате..
Такая проблема... решил сделать 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 $result; sleep(10); } Помогите плз сделать третий и более параметр (пример: !weather Россия Москва)
cylaaaan, по-моему проще всего использовать следующий алгоритм: 1 получить строку, где будет комманда и ее параметры.. ( $string ) 2 разбить ее split'ом на отдельные слова и занести их в массив.. ( @params = split " ", $string; 3 вытащить (shift'ом) нулевой элемент массива - в нем будет указана комманда.. ( $cmd = shift @params; ) 4 распознать комманду и передать массив с параметрами на нужный саб.. ( ну тут идет цепочка if - elsif - else , где мы вызываем соответствующий комманде саб, передавая массив @params в качестве параметров )
подскажите плз, как из консоли пересобрать перл с поддержкой 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 .