Народ , такой вопрос. ( сразу говорю что ногами не бейте сильно, сам знаю чо ботинок полный). Пытаюсь написать прогу, что бы она в директории искала во всех файлах определенное слово. Но чето пока не могу понять в чем проблема. Не ищет тварюка чего то. Code: open (FILE2," +> 1.txt "); opendir (DIR,"MY" ); open (LIST,">> final.txt") ; @dir = readdir (DIR); $a= undef ; for ($a= 2; $a <= $#dir ; $a++ ) { chomp($b=$dir[$a]); print FILE2 "$b\n" ; } while (<FILE2>) { $search=$_ ; open (SEARCH ,"<$search") ; while (<SEARCH>) { $c=$_ ; if ($c =~ m/User/i) { print LIST "$c ----- $search \n" ; } } } close LIST ; close FILE2 ; close SEARCH ; closedir DIR ; <> ;
экранирование спецсимволов Вот есть, например, такой кусок кода: PHP: my $var = $ARGV[0]; print $var; Как при вводе экранировать спецсимволы? Например, при передаче $ARGV[0] строки, содержащей символ "&" вылазит ошибка "строка_до_символа & " "не является внутренней или внешней командой, исполняемой программой или пакетным файлом." Т.е, например, при запуске "myscript.pl http://url.com/index.php?id1=1&id2=2" символ & воспринимается как амперсанд - как превратить его в строчный символ?
ммм Code: $ [COLOR=White][SIZE=1]cat t.pl[/SIZE][/COLOR] [COLOR=DarkOrange]#!/usr/bin/perl -w use strict; use warnings; my $s = shift; print $s,"\n";[/COLOR] $ [COLOR=White][SIZE=1]perl -w t.pl http://url.com/index.php?id1=1\&id2=2[/SIZE][/COLOR] [COLOR=Red]http://url.com/index.php?id1=1&id2=2[/COLOR] мммм ?
в винде так не получится... ) а зачем 2 раза -w пишешь вдобавок к тому, что прагму warnings заюзал? )
В неком файле на серваке заданы пассы и логины через разделитель. Есть форма, где поля логин и пасс. проверяем введенные логин и пасс. для начала написал только проверку логина. ниже приведен код. Проблема в том, что Code: if ($arr[$m]->[$n]==$obtained_login) выполняется всегда, если первый символ логина - буква. Если цифра - не выполняется. Объясните, пожалуйста, почему так происходит. HTML: <html> <head> <title>xz</title> </head> <body> <form action="lab20.pl" method="post"> LOGIN <input type="text" name="login"><p> БЗДЫДЫЩ: <input type="text" name="pass"><p> <input type="submit" value="check"> </form> </body> </html> Code: #!/usr/bin/perl -w use CGI; print "Content-type:text/html;charset=windows-1251\n\n"; $q = new CGI; $obtained_login = $q->param('login'); $obtained_password = $q->param('pass'); open(DATA, "users.txt"); $i=0; foreach $line(<DATA>) { $j=0; @temp=split (/;/,$line); while ($j<=$#temp) { $arr[$i]->[$j]=$temp[$j]; $j++; } $i++; } close(DATA); for($m=0; $m<$i; $m++) { for ($n=0;$n<$j; $n++) { if ($arr[$m]->[$n]==$obtained_login) { print "good"; } else { print "bad";} } }
а как бы его так аккуратно дописать, что б и пароль проверял? я дописал, но сам баг через 5 минут нашел.
мне было проще переписать занова, надеюсь это то что ты имел ввиду Code: #!/usr/bin/perl -w use strict; use CGI qw(:standard); my $cgi = CGI->new(); my $login = $cgi->param('login'); my $pass = $cgi->param('pass'); print $cgi->header(-charset => 'UTF-8'); if ($login && $pass) { readdata(); } else { print $cgi->start_html('Fuck you hacker!'), $cgi->start_center, $cgi->h1('Fuck you hacker!'), $cgi->end_html; } sub readdata { open(my $data, '<users.txt'); while(<$data>) { if (/$login;$pass/) { print $cgi->start_html('GOOD!'), $cgi->start_center, $cgi->h1('GOOD!'), $cgi->end_html; close $data; exit } } print $cgi->start_html('BAD!'), $cgi->start_center, $cgi->h1('BAD!'), $cgi->end_html; } результат испытаний; http://localhost/cgi-bin/lol.pl?login=root&pass=432 пишет BAD; http://localhost/cgi-bin/lol.pl?login=root&pass=pass пишет GOOD если вызвать без параметров то - F*ck you hacker!
Помогите.. Я немогу установить Mail:OP3Client У меня есть сама библиотека а не ссылка для ее скачки и установки.... Помогите..
А куда сами файлы кидать??? там 2 папки: cgi-shl htdocs в каждой папка qdpop а в ней куда *.pl и др файлы.
ты на хостинг чтоли модуль хочешь поставить? на хостинг может поставить только сам хостер, попробуй просто положить модуль в одной папке со скриптом его использующим, сами файлы в cgi-shl
ыыы, у тебя скрипт для вэб? если для вэб то нужен сервер. cgi-shl, htdocs где вообще эти папки находятся?
жесть! чтобы поставить библиотеку пишем в консоли ppm, у нас появится ppm>, пишем install Mail:OP3Client, готово. файлы из архива модуля никуда класть не нужно. проверить установку можно так perl -e "use Mail:OP3Client" если не напишет ничего в ответ то модуль успешно установлен, но зачем нам модуль если мы ни... не знаем?