Forum Webscript.Ru

Программирование => Perl => Тема начата: Eva от 27 Января 2005, 10:34:52

Название: запись в файл + редирект
Отправлено: Eva от 27 Января 2005, 10:34:52
Возникла следующая проблема.

Пользователь заполняет форму -> запускается скрипт.

В скрипте:

1. выполняется upload файла:

@parts = split(/\\\\/,$filename);
$file=@parts[(scalar @parts) - 1];
open (UFILE,">$imgurl$file");
binmode(UFILE);
flock(UFILE,2);
while ($bytesread=read($filename,$buffer,1024)) { print UFILE $buffer; }
close(UFILE);
close $filename;


2. редактируется некий текстовый файл:

open (OLD,"< $old");
open (NEW,"> $new");
select(NEW);
while()
{
...
print NEW $_;
}
close(OLD);
close(NEW);
rename($new,$old);


3. выполняется редирект

print "Status: 302\\n";
print "Location: $url\\n\\n";


В результате в error_log появляется ошибка "Premature end of script headers".

Что в данном случае не так?
Как в одном скрипте сделать запись в файл и сразу после этого - редирект? Или это невозможно в принципе?
Название: запись в файл + редирект
Отправлено: Green Kakadu от 27 Января 2005, 10:49:58
Цитировать
Eva:
В результате в error_log появляется ошибка "Premature end of script headers".

Что в данном случае не так?

Цитировать
Eva:
select(NEW);

поток вывода по умолчанию стоит вернуть в STDOUT
т.е.
select STDOUT;
print "Status: 302\\n";
print "Location: $url\\n\\n";

Кстати, в вашем скрипте

Цитировать
Eva:
open (NEW,"> $new");
select(NEW);
while()
{
...
print NEW $_;

select не нужен, т.к. вы все равно используете дескриптор. Т.е. можете просто смело убрать
 select(NEW);
и все должно быть нормально
Название: запись в файл + редирект
Отправлено: Eva от 27 Января 2005, 11:59:21
Цитировать
Green Kakadu:
select не нужен, т.к. вы все равно используете дескриптор. Т.е. можете просто смело убрать
select(NEW);
и все должно быть нормально


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