Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Чтение из файла на другом сервере


Автор: silverst 16.2.2012, 12:42
При попытке запустить данный скрипт ничего не выдаёт кроме слова  "test"
Файл по адресу http://astro.uni-altai.ru/catalogs/yale/yale.star  существует

Код

!/usr/bin/perl  
#First.cgi

open(FFF, "http://astro.uni-altai.ru/catalogs/yale/yale.star");
$line=<FFF>;
print "Content-Type: text/html\n\n";
print "<HTML><BODY>";
print  "test $line";
print "</BODY></HTML>";
close(FFF);

Автор: DurRandir 16.2.2012, 13:36
Тут вам не здесь PHP.

Автор: silverst 16.2.2012, 15:16
Посмотрел в интернете про чтение из файла на данном языке:http://www.codenet.ru/webmast/perl/files.php, описывает данный алгоритм, вроде всё сделал по шаблону=))

Автор: Pfailed 16.2.2012, 20:32
Это работает только для локальных файлов.
Для http можно так
Код

use HTTP::Tiny;

$line = HTTP::Tiny->new->get("http://astro.uni-altai.ru/catalogs/yale/yale.star")->{content};

Автор: silverst 17.2.2012, 09:38
Всё равно почему то выводит ошибку:
Код

#!/usr/bin/perl  
#First.cgi

use  HTTP::Tiny;

$line=HTTP::Tiny->new->get("http://astro.uni-altai.ru/catalogs/yale/yale.star")->{content};

print "Content-Type: text/html\n\n";
print "<HTML><BODY>";
print  "test $line";
print "</BODY></HTML>";

Автор: Pfailed 17.2.2012, 11:31
silverst, какую?

Автор: silverst 17.2.2012, 12:12
500 Internal Server Error 

Автор: DurRandir 17.2.2012, 12:43
Так посмотрите в логе сервера, _какую именно_ ошибку это вызывает.

PS: Вы модуль то поставили?

Автор: silverst 17.2.2012, 13:49
Модули Perl установленны

Автор: Pfailed 17.2.2012, 13:51
Именно этот видимо не установлен, он с perl 5.14 по умолчанию идет, но у вас наверное версия ниже.

Автор: silverst 17.2.2012, 14:03
Я не знаю какая версия установленная на сервере, поэтому обратился в тех поддержку

Добавлено через 13 минут и 29 секунд
Версия 5.8.8

Автор: silverst 18.2.2012, 10:41
Сдеалал так:
Код

#!/usr/bin/perl  
#First3.cgi
my $url = 'http://astro.uni-altai.ru/catalogs/yale/yale.star';
  # Всего лишь для примера: новые записи на /Fresh Air/
use LWP::Simple;
 
my $content = get $url;

$s=substr((get $url), 0, 140);

print "Content-Type: text/html\n\n";
print "<HTML><BODY>";
print  "$s ";
print "</BODY></HTML>";

Но мне надо, чтобы каждая строчка была отедельно, а не все в одну строку

Автор: infarch 18.2.2012, 15:06
Код

#!/usr/bin/perl  
#First3.cgi
my $url = 'http://astro.uni-altai.ru/catalogs/yale/yale.star';
  # Всего лишь для примера: новые записи на /Fresh Air/
use LWP::Simple;
 
my $s=substr((get $url), 0, 140);
$s=~s/\n/<br>/g;
print "Content-Type: text/html\n\n";
print "<HTML><BODY>";
print  "$s ";
print "</BODY></HTML>";

Автор: silverst 19.2.2012, 11:51
infarch, спасибо

Автор: silverst 20.2.2012, 17:54
А как теперьо прочитать отедельно по строкам этот файл?

Автор: infarch 21.2.2012, 11:53
Например так:

my @lines = split "\n", get($url);

Получаем массив строк.

Вам теорию подтянуть не помешает, однако...

Автор: silverst 21.2.2012, 12:35
Дело в том что я только пеорешёл на данный язык, а раньше писал исключительно на php

Автор: yazu 21.2.2012, 17:17
Как-то так:
Код

#!/usr/bin/perl -w
use strict;

use LWP::Simple;

my $url = 'http://astro.uni-altai.ru/catalogs/yale/yale.star';

# здесь мы получаем файл целиком
my $content = get $url;

# делим по строчкам и сохраняем в массиве
my @lines = split "\n", $content;

# обрабатываем
my $count = 0;
for my $line (@lines) {
    print ++$count, " $line\n";
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)