Forum Webscript.Ru

Программирование => Perl => Тема начата: /IE][A от 19 Августа 2003, 16:48:40

Название: Как получить данные из внешней программы
Отправлено: /IE][A от 19 Августа 2003, 16:48:40
Привет молодцы! (ударение на первый слог :)

Подскажите как можно получить выходные данные из прораммы которая запускается из скрипта, т.е. в скрипте я запускаю wget и мне нужно его остановить когда появится любая ошибка (301 302 404 500 401 и т.д) если 200 ОК то двигаем дальше.

Пробовал так:
$temp=`wget $durl`;
if ($temp eq "404 Not Found"){
   print"Error";
   exit();
}
else{
   print"OK"
}
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 19 Августа 2003, 17:11:24
Посмотри что в твоем случае содержит $temp

if ($temp =~ m/200 OK/){
print "Ok!";
}else{
print "Bad news...";
}
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 19 Августа 2003, 17:35:06
Пробовал.

temp ничего не содержит.
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 19 Августа 2003, 17:45:22
??? Что выдает print $temp?
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 19 Августа 2003, 17:56:18
temp как бы чист, но в общем скирп работает.

я писал m/"..."/ (в кавычках).

Благодарствую.
Название: Как получить данные из внешней программы
Отправлено: mike от 19 Августа 2003, 18:02:59
А так?

$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
   print"OK"
} else {
   print"Error"
}
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 19 Августа 2003, 18:04:58
теперь другой вопрос.
 если файл уже сущействует wget  так и пишет (локализированная)
файл уже, существует, получение не производтся.

если добавляю условие
if ($temp =~ m/200 OK/){
print "Ok!";
}
elsif($temp =~ m/уже существует/){
print "Ok!";
}
else{
print "Bad news...";
}

скрипт выводит Bad news
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 19 Августа 2003, 18:06:52
Цитировать

А так?
$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
   print"OK"
} else {
   print"Error"
}


print $temp все равно ничего не выводит
Название: Как получить данные из внешней программы
Отправлено: mike от 19 Августа 2003, 18:14:51
Цитировать
/IE][A:
скрипт выводит Bad news

Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.
Название: Как получить данные из внешней программы
Отправлено: Chs от 19 Августа 2003, 19:28:22
perldoc perlipc
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 20 Августа 2003, 13:07:34
Цитировать
Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.


Я так понимаю что wget должен выводит в KOI8-r.
Строка для сообщения написана тоже в КОИ.

А если wget выводит в другой кодировке, то как узнать в какой именно.
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 20 Августа 2003, 13:23:31
Цитировать
/IE][A:
Я так понимаю что wget должен выводит в KOI8-r.

Ничего он не должен.
набери wget http://www.webscript.ru и посмотри на ответ
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 20 Августа 2003, 13:41:20
Цитировать
...посмотри на ответ

Если я тебя правильно понял, то wget выдает:
Proxy request sent, awaiting response... 200 OK

А если неправильно, то какой ответ ты имел ввиду?
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 20 Августа 2003, 13:56:40
#!/usr/bin/perl
use strict;

my $durl = "http://www.webscript.ru";

my $temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
print"OK";
} else {
print"Error"
}

open FH, \'./index.html\';
print ;
close FH;

Что тебе еще непонятно?
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 20 Августа 2003, 17:37:57
Все пучком, работает, вот только теперь появилась трабла:
wget перестал выводит индикатор загрузки в real-time, выводит всю инфу уже после загрузки файла.
Можно это как то исправить.
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 20 Августа 2003, 17:47:46
print $temp;
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 20 Августа 2003, 17:52:24
Цитировать
print $temp;


print $temp выводит только после того как файл загрузится, т.е. пока грузится файл на экран ничего не выводится, когда файл получен - выводится вся инфа которя была во время загрузки.
Название: Как получить данные из внешней программы
Отправлено: NeoNox от 20 Августа 2003, 18:10:59
нет - динамически нельзя
Название: Как получить данные из внешней программы
Отправлено: /IE][A от 21 Августа 2003, 10:16:47
Чтож  и на этом БОЛЬШОЕ спасибо.

Можно закрывать тему.