Forum Webscript.Ru
Программирование => Perl => Тема начата: Yaroslav от 08 Марта 2005, 20:44:41
-
что может причинить создание файла HASH(0x8092be0)
внутренность в нем пустая и работе он не мешает, но все же, раз он создается, значит что то не так....
создается он в директории где хранятся созданные в ручную сессии
-
У меня было что-то подобное, функция записывающая хэш в файл требовала два параметра function($filename,\\%hash), и я по своей невнимательности забыл между аргументами запятую и у меня файлы создавались такого вида file.txtHASH(0x542be0) ... конечно не ответ но все же мож где проглядел... удачи!
-
Потому что где-то не разрешаешь ссылку. И заместо вывода субъекта, выводишь ссылку. Определись, в каком участке кода создаётся данный файл. И запость его (код) сюда. Ну или сам найди ошибку.
-
вот выношу на ваше обсуждение часть которая отвечает за создание и удаление файлов в данной директории
$file - с куков
$time=time();
if ($file eq "") { #если в куке пусто
while (-e "temp/$time.txt") { #если такая сесия есть уже
$time++;
}
$file=$time;
open (OLDALLUSER,"temp/files.tmp"); #смотрим лист сесий
while () { chomp;
($oldtime,$oldfile)=split(/\\|/);
if ($time-$oldtime<24*60*60) { push @newalluser,"$_\\n"; } #если время хранения не вышло
else { unlink ("temp/$oldfile.txt"); } # если вышло удаляем
}
push @newalluser,"$time|$file\\n"; # добавляем новую сесию
open (NEWALLUSER,">temp/files.tmp"); # перезаписуем всех живых :)
print NEWALLUSER @newalluser;
close (NEWALLUSER);
print "Set-Cookie: file=$file; path=/; \\n";#заносим в кук
}
else { #если сесия уже в куке была читаем что там было
open (FILE, "temp/$file.txt");
while () { chomp;
($oldid,$oldkol)=split(/\\|/);
if ($oldid ne $id) { push @newfile,"$oldid|$oldkol\\n"; }
}
}
if ($kol > "0") { push @newfile,"$id|$kol\\n"; } #добавляем новую запись или заменяем
open (FILE, ">temp/$file.txt");
print FILE @newfile; #собственно записуем новое
close (FILE);
-
1. Для большей уверенности попробуйте оформить Ваши строки типа:
"temp/$time.txt"
"$oldid|$oldkol\\n"
...
как
"temp/${time}.txt"
"${oldid}|${oldkol}\\n"
...
2. А вот такие записи я вообще не понимаю
push @newalluser,"$_\\n";
push @newalluser,"$time|$file\\n";
зачем хранить в массиве для каждой записи перевод строки, вставляйте его при выводе.
3. Эта запись ошибочна
if ($kol > "0") ....
решите, что Вы хотите сравнивать строки или числа
4. Тут
else { unlink ("temp/$oldfile.txt"); }
я бы подстраховался
else { unlink("temp/$oldfile.txt") if -e "temp/$oldfile.txt"; }
5. Я вижу открытие
open (OLDALLUSER...
но не вижу закрытия
PS Это конечно не ответ на Ваш вопрос, но возможно поможет в избежании других проблем.
-
vladsu
3. чем же ошибочна? она как раз выдает количество... (я по книжке)
4. ок
-
Yaroslav:
3. чем же ошибочна? она как раз выдает количество... (я по книжке)
В Вашем варианте это, повидимому, должно выглядеть так
if ($kol > 0)...
0 - это число, когда Вы его обрамляете кавычками становится строкой.
-
vladsu
возможо я что то и пропустил.. :(