Perl получение страницы

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Необходимо, чтобы perl скрипт подгружал данные с сайта и отображал их.
В .htaccess укажу, что /images/* /cgi/script.pl?$1
И теперь надо, чтобы скрипт обратился к файлу Для просмотра ссылки Войди или Зарегистрируйся , где $1 - это название файла и расширение, которое указал юзер, скачал и отобразил его.
С перлом никогда не работал, но на новом сервере админ сказал, что надо сделать именно так.
Буду безмерно благодарен за помощь.
 
Закачка:

Код:
my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
binmode (FH);
print FH $data;
close (FH);

Отображение:

Код:
my $file = "image.jpg";
my $length = (stat($file)) [10];
print "Content-type: image/jpg\n";
print "Content-length: $length \n\n";
binmode STDOUT;
open (FH,'<', $file) || die "Could not open $file: $!";
my $buffer = "";
while (read(FH, $buffer, 10240)) {
    print $buffer;
}
close(FH);
 
Не всегда это будут картинки JPG, иногда html страницы.
Вот товарищ написал код, но хостинг говорит, что ошибки в коде:
Код:
#use strict;
#use warnings;
my $query = $ENV{'REQUEST_URI'};
$query //= $ARGV[0];
$query //= '/';
My $response = `wget --ignore-length --save-headers --no-check-certificate -qO — http://mail.ru$query`;
binmode STDOUT, ":utf8";
print $response;
 
Ну тогда как-то так:

Код:
use strict;use warnings;use LWP::Simple;
my $query = $ENV{'REQUEST_URI'}; $query //= $ARGV[0]; $query //= '/';
my $url ='http://mail.ru$query';my $file ='filename_here'; getstore($url, $file);
my $length = (stat($file)) [10];
binmode STDOUT;
open (FH,'<', $file) || die "Could not open $file: $!";
my $buffer = "";
while (read(FH, $buffer, 10240)) {
    print $buffer;
}
close(FH);

Использовать системные вызовы не рекомендуется, тем более, что в Perl есть дофига своих механизмов.
 
Тогда замените вторую строку на
@values = split(/&/,$ENV{'QUERY_STRING'});
Выйдет ассоциированный массив, с которым, я думаю, понятно как работать.
 
Честно сказать, не понял, что именно надо сменить в скрипте. Строку заменил, всё равно ругается хостинг на данный скрипт.

Через командную строку скрипт, который указал в 3м сообщении работает. Однако через веб - ругается хостинг.
Вот редирект в .htaccess'e
Код:
RewriteRule ^images/(.*)$ /cgi-bin/img_02.pl?$1 [L,PT]
 
Последнее редактирование модератором:
Добавьте переменную в вызов.
Например, RewriteRule ^images/(.*)$ /cgi-bin/img_02.pl?s=$1 [L,PT]
Потом работать с ней так:
Код:
@values = split(/&/,$ENV{'QUERY_STRING'});
my query=@values['s']
 
Код:
use strict;use warnings;use LWP::Simple;
my $query = $ENV{'REQUEST_URI'}; $query //= $ARGV[0]; $query //= '/';
my $url ='http://mail.ru$query';my $file ='filename_here'; getstore($url, $file);
my $length = (stat($file)) [10];
binmode STDOUT;
open (FH,'<', $file) || die "Could not open $file: $!";
my $buffer = "";
while (read(FH, $buffer, 10240)) {
    print $buffer;
}
close(FH);
 
Назад
Сверху