Модератор: Модераторы разделов
-
agbr
- Сообщения: 486
- ОС: openSUSE 10.2
Сообщение
agbr »
Проблема такая:
есть класс, он работает с файлом, который открывает open'ом, для этого нужен файловый дескриптор.
т.е. обычно пишется типа
но файловый дескриптор должен является членом объекта, т.е. нечто типа
$self->{F}...
вопрос:
как это правильно написать, а то я уже мозги себе взорвал...

jabber: agbr@jabber.ru
против проприетарного ПО в GNU/Linux
-
AndyX
- Сообщения: 116
Сообщение
AndyX »
А почему бы не использовать, например, IO::File?
Код: Выделить всё
$fh = new IO::File "> file";
if (defined $fh) {
print $fh "bar\n";
$fh->close;
}
А вообще-то сохранить дескриптор в переменной можно вроде бы так:
I am in shape. Round is a shape.
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Сообщение
madskull »
Есть стандартный модуль FileHandle - довольно прозрачный и удобный
ArchLinux / IceWM
-
alpha
- Сообщения: 4
Сообщение
alpha »
(agbr @ Суббота, 18 Декабря 2004, 16:57) писал(а):Проблема такая:
есть класс, он работает с файлом, который открывает open'ом, для этого нужен файловый дескриптор.
т.е. обычно пишется типа
но файловый дескриптор должен является членом объекта, т.е. нечто типа
$self->{F}...
вопрос:
как это правильно написать, а то я уже мозги себе взорвал...
код кривой.
если ты хочешь
print F "text";
то надо не
open(F,"file");
а
open(F,">file");
или
open(F,">>file");
Т.Е.
package my_class;
use Exporter;
@ISA = qw(EXPORTER);
@EXPORT = ...
bla bla
sub mfopen()
{
return(open(TF, >>@_));
}
ЗЫ: не проверял... сугубо теория. рук.-ног. не бить!