Типо того? PHP: #!/usr/bin/perl @array = ('apple','asdas','123123d','sda2122d12','sad12d12e','tomato','orange'); #Создаем массив $size = @array; #Получаем размер массива $str = 'tomato'; #Строку по которой ищем индекс for ($i=0;$i<$size;$i++) { if ($str eq $array[$i]) { print "Index of $str : ".$i; } }
простенький вопрос . В общем я скачиваю хтмл страничку и выдергиваю все от тега до тега - все ок НО выдергивается только один раз , нужен цикл , как реализовать ? КОД : open(FIL,">sait.txt"); @loleg=$content =~m {<[<th>]+/?>(.+?)</?[\/th]+>}; print FIL @loleg;
open(FIL,">sait.txt"); @loleg=$content =~m {<[<th>]+/?>(.+?)</?[\/th]+>}g; my $i = 0; foreach $line (@loleg) { $lolarr[$i] = $line; $i++;} print FIL @loleg;
>> foreach $line (@loleg) { $lolarr[$i] = $line; $i++;} можно поинтересоваться, в чем заключается глубинный смысл этой строки ? +)
>> ммм... узнаем длину массива... хз) и для этого ты создал еще один масив и переложил в него в цикле по одному все элемены массива, чтоб пересчитать их ?? /me ф шоке, честно говоря.. )) з.ы. длина массива = scalar @massiv +)
сори народ я протупил , нужно было параметр g (глобальный поиск) использовать . @loleg=$content =~m {<[<th>]+/?>(.+?)</?[\/th]+>}g;
и еще один вопросик от меня . авторизируюсь на сайте xaker.ru , с авторизацией вроде все ок . Как получить урл на который меня перебрасывает после авторизации ? http://paste.org.ru/?j8xlt9
$p01nt >> $url = '?????????????'; >> $content = get $url; вот это не понял к чему.. раз начал использовать io::socket, то юзай его и дальше.. получаешь ответ своего пост-запроса: $sock->recv($content, 400); и глядишь в $content нужные заголовки..
и опять я вообщем теперь вопрос по парсингу странички . document.forms.auth.action="http://******.ru/au/authen.phtml?u=случайное значение &s=&i=0.0&a_cd=случайное значение"; надо вытащить u=случайное значение &s=&i=0.0&a_cd=случайное значение получается только http://****.ru/au/authen.phtml?u=*****&s=&i=0.0&a_cd=****** юзаю @mass=$content =~ m/document.forms.auth.action="(\S+)"/i;
Если тебе нужно получить только строку: u=СТРОКА&s=&i=0.0&a_cd=СТРОКА То вот тебе скрипт: PHP: #!/usr/bin/perl use Socket; $host="www_САЙТ_ru"; #Замени на нужный тебе (Я уже знаю, какой тебе нужен и уже его проверил ) ^^ $port="80"; socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')); $iaddr = inet_aton($host); $paddr = sockaddr_in($port, $iaddr); connect(SOCK, $paddr); $header = "GET /index.phtml HTTP/1.0\r\n" ."User-Agent: Opera/10.84 (Windows NT 5.1; U; ru)\r\n" ."Host: $host\r\n" ."Referer: http://chicks-for-hackers.com/\r\n" ."Proxy-Connection: close\r\n" ."Content-type: application/x-www-form-urlencoded\r\n\r\n"; send (SOCK, $header, 0); @data=<SOCK>; close(SOCK); $size = @data; for ($i=0;$i<$size;$i++) { $str=@data[$i]; if ($str =~m/document.forms.auth.action/) { #Обрабатываем ответ, выдираем строчки, которые соответсвуютт шаблону @parse = split("[?]",$str); #Разделяем строчку, тоесть в первый элемент массива parse будет строка до вопросительного знака, а второй элемент после, то что нам нужно $out = @parse_need[1]; #Тут наша строка + 4 символа - "; и два пробельных $out = substr($out,0, length($out)-4); #Убираем 4 последних символа print $out; #Выводим результат exit; #Завершаем работу скрипта, т.к. другие строчки нас не интересуют } }
Code: print $2 if $content =~ m|document.forms.auth.action="http://******.ru/au/authen.phtml?u=(.*?)&s=&i=0.0&a_cd=(.*?)";|;
Code: $content = ' lalala qwerty; ssss aaaa; dddd; xcvxcvxcvdocument.forms.auth.action="http://123.ru/au/authen.phtml?u=lalala&s=&i=0.0&a_cd=123abc"; lalala hekihekiheki '; print $1, ' ', $2 if $content =~ m|document\.forms\.auth\.action=\"http://123\.ru/au/authen\.phtml\?u=(.*?)\&s=\&i=0\.0\&a_cd=(.*?)\";|;
если тебе нужно работать с http или ftp протколом то LWP наиболее удобен, для всего остального сокеты (либо соответствующие модули которых на cpan.org полно), а больше ничего и нет 8)