IO::Handle implementieren

16/03/2010 - 09:58 von Florian Weimer | Report spam
Was ist der empfohlene Weg, ein IO::Handle-àhnliches Objekt zu
implementieren? Bislang mache ich das größtenteils von Hand, aber
Feinheiten wie die Unterstützung von $/ fehlen meist. Das führt
gelegentlich zu unnötigen Überraschungen.

PerlIO::via dürfte das meiste lösen, aber es gibt nur verhàltnismàßig
wenige Module und Programmierer, die das nutzen (vermutlich weil die
interne API so völlig verschieden von dem ist, was beim Benutzer
ankommt). Ist das trotzdem der kanonische Ansatz?

Performance ist im Moment überhaupt nicht wichtig, es geht erst einmal
darum, dem Nutzer eine vernünftige, vertraute API zu übergeben.
 

Lesen sie die antworten

#1 Frank Seitz
16/03/2010 - 11:25 | Warnen spam
Florian Weimer wrote:
Was ist der empfohlene Weg, ein IO::Handle-àhnliches Objekt zu
implementieren? Bislang mache ich das größtenteils von Hand, aber
Feinheiten wie die Unterstützung von $/ fehlen meist. Das führt
gelegentlich zu unnötigen Überraschungen.

PerlIO::via dürfte das meiste lösen, aber es gibt nur verhàltnismàßig
wenige Module und Programmierer, die das nutzen (vermutlich weil die
interne API so völlig verschieden von dem ist, was beim Benutzer
ankommt). Ist das trotzdem der kanonische Ansatz?

Performance ist im Moment überhaupt nicht wichtig, es geht erst einmal
darum, dem Nutzer eine vernünftige, vertraute API zu übergeben.



Was genau willst du erreichen?
Wenn eine vorhandene Klasse nicht alles tut, was du dir
vorstellst, ist vielleicht Ableitung eine Möglichkeit?

Ich nutze eine eigene Filehandle-Klasse, die ich
nach eigenen Bedürfnissen gestaltet habe. Mit lexikalischen
Filehandles ist das ja keine Problem.

Der Konstruktor geht ungefàhr so:

sub new {
my ($class,$mode,$file) = @_;

open my $fh,$mode,$file or die;
return bless $fh,$class;
}

Eine Operation:

sub close {
my $self = shift;

CORE::close $$self or die;
return;
}

Grüße
Frank
Dipl.-Inform. Frank Seitz
Anwendungen für Ihr Internet und Intranet
Tel: +49 (0)4103/180301; Fax: -02; Industriestr. 31, D-22880 Wedel

Blog: http://www.fseitz.de/blog
XING-Profil: http://www.xing.com/profile/Frank_Seitz2

Ähnliche fragen