Автор Тема: Какая-то фигня с освобождение файловых хэндлов  (Прочитано 1855 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн toypaul

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 55
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.1csql.ru
Есть как будто бы объект. В нем открывается файл и хэндл запоминается:

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.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28