Forum Webscript.Ru
Программирование => Perl => Тема начата: /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"
}
-
Посмотри что в твоем случае содержит $temp
if ($temp =~ m/200 OK/){
print "Ok!";
}else{
print "Bad news...";
}
-
Пробовал.
temp ничего не содержит.
-
??? Что выдает print $temp?
-
temp как бы чист, но в общем скирп работает.
я писал m/"..."/ (в кавычках).
Благодарствую.
-
А так?
$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
print"OK"
} else {
print"Error"
}
-
теперь другой вопрос.
если файл уже сущействует wget так и пишет (локализированная)
файл уже, существует, получение не производтся.
если добавляю условие
if ($temp =~ m/200 OK/){
print "Ok!";
}
elsif($temp =~ m/уже существует/){
print "Ok!";
}
else{
print "Bad news...";
}
скрипт выводит Bad news
-
А так?
$temp=`wget $durl 2>&1`;
if ($temp =~ m/200 OK/){
print"OK"
} else {
print"Error"
}
print $temp все равно ничего не выводит
-
/IE][A:
скрипт выводит Bad news
Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.
-
perldoc perlipc
-
Проверь кодировку, в которой выдает сообщение wget и в которой написана строка для сравнения.
Я так понимаю что wget должен выводит в KOI8-r.
Строка для сообщения написана тоже в КОИ.
А если wget выводит в другой кодировке, то как узнать в какой именно.
-
/IE][A:
Я так понимаю что wget должен выводит в KOI8-r.
Ничего он не должен.
набери wget http://www.webscript.ru и посмотри на ответ
-
...посмотри на ответ
Если я тебя правильно понял, то wget выдает:
Proxy request sent, awaiting response... 200 OK
А если неправильно, то какой ответ ты имел ввиду?
-
#!/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;
Что тебе еще непонятно?
-
Все пучком, работает, вот только теперь появилась трабла:
wget перестал выводит индикатор загрузки в real-time, выводит всю инфу уже после загрузки файла.
Можно это как то исправить.
-
print $temp;
-
print $temp;
print $temp выводит только после того как файл загрузится, т.е. пока грузится файл на экран ничего не выводится, когда файл получен - выводится вся инфа которя была во время загрузки.
-
нет - динамически нельзя
-
Чтож и на этом БОЛЬШОЕ спасибо.
Можно закрывать тему.