Forum Webscript.Ru

Программирование => Perl => Тема начата: toypaul от 07 Марта 2003, 21:59:49

Название: Какая-то фигня с освобождение файловых хэндлов
Отправлено: toypaul от 07 Марта 2003, 21:59:49
Есть как будто бы объект. В нем открывается файл и хэндл запоминается:

if (open($fh,$self->{filemode}.$self->{filename}))
{
    $self->{fh} = $fh;
...
Затем производятся и файл зыкрывается

        close($self->{fh});
        undef($self->{fh});
        $self->{opened} = 0;

А затем опять попытка открытия. Немного по другому. В первый раз мы файл создали (метод new). Затем поработали и закрыли (close). Теперь открываем (opendb). Ну и... файл открывается, то есть

    if (open($fh,$self->{filemode}.$self->{filename}))
    {
        $self->{fh} = $fh;

open отрабатывает и в блок заходим. Но! Данные из файла не читаются. Хотя $self->{filemode} = "<". Мучаемся... Находим, если объекту присвоить 0 , например $tdb = 0, то файл читается. Но это естественно не устраивает - объект должен сохранить свое состояние (даже после метода close).

Вот такая фигня. Perl под Вынь98.