Не получается вывести картинку на сервере скриптом *.cdi Вот примерный KOD: #!/usr/bin/perl -w T use CGI::Carp qw (fatalsToBrowser); use strict ; use CGI qw( :all) ; print "Content-Type: image/jpeg\n\n"; my($imagedir, $day, @jpegs, $error) ; $imagedir="/images/picday/"; $error="/images/error.jpg"; sub display_image { my ($image) = @_; open(IMAGE, "$image") || exit; binmode STDOUT;binmode IMAGE; print<IMAGE>; close(IMAGE); exit; } # Дни месяца, 1-28, 29, 30 или 31 $day=(localtime)[3]; $day=$day-1; # Мы хотим использовать дни 0-27, и т.д... opendir(IMGDIR, $imagedir) || display_image($error); @jpegs=sort grep(/\.jpg$/, readdir IMGDIR); closedir(IMGDIR); my $image = "$imagedir/$jpegs[$day]"; $image=$error if (not defined $jpegs[$day]);##если не нашли папку основную c картинками ##выводим картинку с ошибкой display_image($image); .....но вылетает такая ошибка <<Изображение http://******.ru/cgi-bin/dayimage.cgi не может быть показано так как содержит ошибки >> где ошибка понять не могу???
Кто может накодить простенький парсер на perl? На форуме не нашел ничего похожего. Суть задачи следующая: Имеем множество файлов 1.txt, 2.txt, 3.txt и т.д. В файлах содержится много мусора и строки такого формата: Code: id=3424&Password=1231243&Email=[email protected] Нам нужно запарсить из файлов поле Password= и все содержимое в ней до поля Email= в новый файл result.txt Заранее благодарен
open OUT, ">result.txt"; open IN 'file.txt'; while (<IN>){ my ($f1,$f2,$f3) = split(/&/, $_); my (undef, $pass) = spliy (/=/, $f2); print OUT $pass; } close OUT close IN как то так
Missing comma after first argument to open function at C:\1\parser.pl line 4, ne ar "'file.txt';" syntax error at C:\1\parser.pl line 11, near "OUT close" Execution of C:\1\parser.pl aborted due to compilation errors.
Да он тебе по быстренькому код накидал и не проверил..код надо немного подредактировать я его проверил он выводит в файл строкой типа 123124312312431231243123124312312431231243 а тебе я так понял надо Password=1231243 Password=1231243 Password=1231243 Вот код дровяной не оптимизирован но работает.. #l/usr/bin/perl -w use strict; my $coint = 0; my ($result,$indexend,$passlenght,$file,$indexend2,$index2,$index); my @str2; print "Enter name file: "; # файл лежит в этой директории $file = <STDIN>;chomp $file; open(FILE, $file) || die "Ошибка при открытии файла $file: $!"; my @str = <FILE>; close FILE; foreach(@str) { $index = index($_, "="); $index2 = index($_, "=", $index+1); $indexend = index($_, "&"); $indexend2 = index($_, "&", $indexend+1); $passlenght = $indexend2 - $index2; $result= "\nPassword"; $result.=substr($_, $index2, $passlenght); @str2 [$coint] = $result; $result = " "; $coint++; } open(FILE, ">>result.txt") || die "Ошибка при открытии файла result.txt: $!"; print FILE @str2; close FILE;
Спасибо, ну вот чего я не могу понять: имеем файл 123.txt в нем идет строка: Login=123&Password=123&valera=353353&Password=3403035&seleochka=2323 вытягивается только первый Password=123 в файл result и перл закрывается, как сделать, так, что бы парсило нужный текст по нужному ключю "password=" ?
Вот этот попробуй, выводит в файл строки типа : Password=123 Password=3403035 Password=124 Password=3403036 --------------------------------------------------------- #!/usr/bin/perl -w use strict; print "Enter name file: "; # файл лежит в этой директории my $file = <STDIN>;chomp $file; open IN ,$file; my @elem1= <IN>; close IN; open OUT, ">>result.txt"; my @elm2; my $count = 0; foreach(@elem1) { my($f1,$f2,$f3,$f4,$f5) = split(/&/,$_); @elm2[$count] = "$f2\n"; $count++; @elm2[$count] = "$f4\n"; $count++; } print OUT @elm2; close OUT; --------------------------------------------------------------
Ну да, накидал по быстрому, и побег Даже не подумал, что человечек и не помыслит немного поработать над скриптом.
Спасибо, работает, ну прийдется доковыривать файлик с подобным текстом: Code: Login=123&Password=123&valera=353353&Password=3403035&seleochka=2323&doda=2222 sdigdismgidsmgids disgmidsmg dosgm disgm sidsmg dismgids dspigmdsgos dsigm diosg Password=444&sdogkdoskgos=3&kdfdfomod=33434&dlfgsdfg=390ik&password=495i496 не получается запарсить Про регулярные выражения верно
решил свой вопрос без помощи perl и гораздо проще Code: grep -E 'password=' source.txt > result.txt вывод строк содержащих нужный мне ключ, а дальше уже дело за малым. Спасибо SekirBoshka за то, что откликнулся!
Друзья подскажите пожалуйста нужно на странице искать email Не как не могу разобраться с регуляркой, подскажите пожалуйста Code: #! /usr/bin/perl use warnings; use LWP 5.64; use HTTP::Cookies; #Авторизация $browser=LWP::UserAgent->new; $browser->cookie_jar( HTTP::Cookies->new); #заход на сайт $response=$browser->get('http://www.test.ru'); $response=$response->as_string; #Парсинг странички и запись в файл balance.txt @balance=$response=grep{s/(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/ig}; print @balance;
/(.*) ([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/$2/ это blabla [email protected] blabla заменит на [email protected] кривоватая регэкспа на выдёргивание мыльника из контекста хреново например это \@[\w\-\.]+ не видел мыл вида [email protected]
вопрос, как на perl реализовать скрипт кодирования строки в hex? все разобрался!))) PHP: #!/usr/bin/perl;use String::HexConvert ':all';if($ARGV[0]){ my $hex=$ARGV[0]; chomp $hex; my $result=ascii_to_hex($hex); print '0x'."$result\n";}
1. Получить (псевдо)случайное целое число в диапазоне 0-1048575 (включительно) 2. Преобразовать полученное десятичное число в двоичную символьную строку, без отбрасывания незначащих 0 старших разрядов. P.S. На php всё делается элементарно и результат ожидаемо верный, на perl же сходу я получаю не то что мне нужно, я так понимаю что есть ньюансы о которых мне приходится только догадываться.
Результат видел? У меня вот что: Code: 00000000000000101001000100100000 00000000000011100111100000000000 00000000000011000110010011000000 00000000000010010100100000100000 00000000000000111111011111000000 00000000000001111101100101000000 00000000000000000110100110100000 00000000000000100000011100100000 00000000000010110111100011100000 00000000000010111010001100000000 00000000000001111000110011100000 00000000000000001110010001100000 00000000000011101011010000000000 00000000000011001000000100100000 00000000000001110010110010100000 00000000000001011001111101100000 00000000000001101101110010100000 00000000000011011000001010100000 00000000000000100001110110100000 00000000000010111011001111100000 00000000000011011001000101000000 00000000000001011001011001100000 00000000000000000011010110000000 00000000000011011011101011000000 00000000000001001011100110000000 00000000000000011110111101000000 00000000000010010001110110000000 00000000000011101111001000000000 00000000000010111110110011100000 00000000000011111101000011100000 00000000000010001110110100100000 00000000000001110110111000000000 00000000000011011110000101000000 00000000000011100100010000000000 00000000000011010000110000000000 00000000000001110111000011100000 00000000000010000110000100000000 00000000000000000011001011000000 00000000000011111101110101000000 00000000000011100110110001100000 00000000000010010100101000000000 00000000000011110110111000000000 00000000000000011011000100000000 00000000000010100010100100000000 00000000000000110001001111100000 00000000000010010001100010100000 00000000000001010111111111100000 00000000000010101001011110100000 00000000000000110101111010000000 00000000000000111111110101000000 00000000000011111110110011000000 00000000000011101100100101000000 00000000000011100000100010100000 00000000000010010100100111000000 00000000000011110000111110100000 00000000000001111001000000100000 00000000000001110100111000000000 00000000000000000011010000100000 00000000000010011000100000000000 00000000000001000100011101100000 00000000000011110110111010000000 00000000000001010000011110000000 00000000000010110101011110000000 00000000000001100100010010000000 00000000000010100101110000100000 00000000000011000001011110100000 00000000000011110000010001000000 00000000000011110110111101000000 00000000000001011111000110100000 00000000000010010001111000100000 00000000000010011000001101000000 00000000000010001000001000100000 00000000000010010011000100100000 00000000000010110111111100000000 00000000000001110110101100100000 00000000000000110111001101100000 00000000000011110000101001100000 00000000000001111111010001100000 00000000000000011110111011000000 00000000000001101000010011000000 00000000000001110010100110100000 00000000000000000010010000100000 00000000000010100001111100100000 00000000000001000111110011000000 00000000000011110100110111000000 00000000000000001001101101100000 00000000000000001111011011000000 00000000000011101000011010100000 00000000000011111010011100000000 00000000000001011011001110000000 00000000000010101010101100100000 00000000000001000011101100000000 00000000000011001011110101000000 00000000000011111101111010100000 00000000000000111100100000100000 00000000000011100101000010000000 00000000000010010101111011000000 00000000000001111101110000000000 00000000000001101001001001000000 00000000000010000111010000000000 00000000000010110001011010100000 00000000000010110101010001100000 00000000000001110011000010100000 00000000000001101100100110100000 00000000000010111010101101000000 00000000000000100101111011100000 00000000000001010010000001100000 00000000000010111001010010000000 00000000000010100010010010100000 00000000000001100110110101000000 00000000000010000110111001100000 00000000000010011000011111000000 00000000000001011101101100100000 00000000000010110010000001000000 00000000000010010011101000000000 00000000000001110011111101000000 00000000000001100000110111100000 00000000000000011000010001100000 00000000000001111111111111000000 00000000000000000101111101000000 00000000000010001000000110000000 00000000000001100011011001000000 00000000000001010010101111000000 00000000000010001101110111100000 00000000000010011010011000100000 00000000000000101110111101100000 00000000000011100111010000000000 00000000000011101111001011100000 00000000000000001100011000100000 00000000000000111111101000000000 00000000000000000111101100000000 00000000000000000011000010000000 00000000000000101011110100100000 00000000000010100000111001100000 00000000000000110011101010000000 00000000000011100100001111000000 00000000000001011011010101100000 00000000000010010001011011100000 00000000000011111011010110100000 00000000000001111101110101100000 00000000000010000110111101100000 00000000000011000101110000100000 00000000000001010111001110100000 00000000000000100100000111000000 00000000000001111000111111000000 00000000000000001001101010000000 00000000000011100100001000000000 00000000000010000000000111000000 00000000000000110111010111100000 00000000000011000111110111000000 00000000000001101011111111000000 00000000000010010101101100100000 00000000000000010001101010000000 00000000000010000000010110100000 00000000000010100010111011100000 00000000000000101100000100100000 00000000000010000111011000100000 00000000000010110101001011000000 00000000000010000001000000000000 00000000000001100000110010100000 00000000000010101110111101100000 00000000000001010101101011100000 00000000000000100000001110100000 00000000000010101101010101100000 00000000000001000101000111100000 00000000000000110000010101100000 00000000000010000111010111100000 00000000000000100111000110100000 00000000000000001100110010000000 00000000000001110010111111000000 00000000000001001001000000000000 00000000000001000001111100100000 00000000000010100111011111000000 00000000000011000001101001000000 00000000000001011111001110100000 00000000000011011101001110100000 00000000000010001110010010100000 00000000000011101011110000100000 00000000000000101011110010000000 00000000000011100011010101100000 00000000000001010011001011000000 00000000000011001000000001100000 00000000000000000100101110100000 00000000000001000011101100100000 00000000000011010010111100000000 00000000000000111110101001100000 00000000000000110101100111000000 00000000000010001111010110100000 00000000000001111111101000100000 00000000000000001010000110100000 00000000000011011101000100100000 00000000000011111111111011100000 00000000000001101011011101000000 00000000000000110110011101100000 00000000000010001111000100100000 00000000000000110001001111100000 00000000000000111100001000100000 00000000000011100111001000100000 00000000000000100011011110100000 00000000000001010101010000000000 00000000000010101110110110100000 00000000000001101011001010100000 00000000000010011001010010000000 00000000000000101010101010100000 00000000000011010100101011100000 00000000000000101000000001100000 00000000000001110110001101000000 00000000000001111101111010000000 00000000000010101111011011100000 00000000000001100010110111100000 00000000000010001010111001000000 00000000000001111100101100000000 00000000000001010111000110000000 00000000000001110000010110000000 00000000000010000011100010000000 00000000000010100100000001100000 00000000000001001111110000000000 00000000000001010010110110100000 00000000000000101101000100000000 00000000000010010000110001100000 00000000000000110111111110000000 00000000000001001111010101000000 00000000000011010110110010000000 00000000000001111010101010000000 00000000000001110111101100000000 00000000000010000000100010100000 00000000000010111000100001100000 00000000000010100001110011100000 00000000000000010111101010100000 00000000000011110000110111000000 00000000000011000101010011100000 00000000000001110110110000100000 00000000000001101001010111000000 00000000000001000010100010000000 00000000000011010010100000000000 00000000000011000101000011100000 00000000000010100111010110000000 00000000000001101110011110000000 00000000000001111011011110100000 00000000000010101000001100100000 00000000000000110110001101000000 00000000000010100001100011100000 00000000000010101001110001000000 00000000000010010011001110100000 00000000000010101101111100100000 00000000000011000000010111100000 00000000000000101001101101100000 00000000000000110010101110100000 00000000000001010011111010100000 00000000000010011001100001000000 00000000000000110011101000000000 00000000000001110001011001100000 00000000000000101101001011100000 00000000000001001110011001100000 00000000000001010001011100100000 00000000000001100111000010000000 00000000000001010001011101100000 00000000000011111010011110100000 00000000000010001000111010000000 00000000000001111010000101100000 00000000000010100110100010100000 00000000000000100001000100100000 00000000000000110010001010000000 00000000000001111011101100000000 00000000000010101100001000000000 00000000000011101001101001000000 00000000000001100010111110100000 00000000000000000110001100000000 00000000000010000000010011100000 00000000000010110010100011100000 00000000000001010110010111000000 00000000000011100110001011000000 00000000000011000100011100000000 00000000000000000010011000100000 00000000000010111000101110100000 00000000000011010110000001000000 00000000000010001010100010100000 00000000000001011111101010100000 00000000000001000000100100100000 00000000000001010011111001000000 00000000000011110011001110100000 00000000000000010111001110000000 00000000000001111011100110000000 00000000000011011010010011000000 00000000000010100100000101100000 00000000000001111000111000100000 00000000000000111000010111100000 00000000000001000011001000000000 00000000000010111110100110100000 00000000000010010010110101100000 00000000000001110100100001100000 00000000000010011101001001100000 00000000000001111111100011100000 00000000000011110011010110000000 00000000000000110111010110100000 00000000000000111100000110000000 00000000000000101110111100100000 PHP: #!/usr/bin/perlwhile(true) {$n= int(1048576*(rand))+int(rand(31));$nstr = substr(unpack("B32", pack("N", $n)),-20);print $nstr."\r\n";} Code: 01001011101001010110 10101000110011100001 01010010011010010011 01110101100110101101 01111110100001011011 11111101001100001011 00011100000100110110 10000100101101001100 11110011100001100000 01000100100001111010 10001110100111000010 00010100011100101101 10000101101110001011 01100100010101100000 01111101110101100011 01101001010001110000 11111110111100001110 11100111001101110000 11001010110111100100 01111111001001010011 11011100110011111100 11101001101111110001 10111001000110001111 00000110100010010100 00110101101110010100 00100111100011001111 01100011001011100100 10000001011110001000 10111101111000011001 00101000010011101101 01010000000100111001 10000000100000111110 11101100001111001111 10001100101100101001 00101000000000100010 11111111101110101001 00111111100011010101 01111011011100110011 10001001011111110011 11100011101111100001 10100011010101101011 00101110010011111001 11111110010101010011 10010110101101010010 11110100111010010101 10011111000100100100 00010000100101101001 11000101010010010110 В принципе задачу я решил, но решение корявое и мне оно не нравится.