NAME
Prty::FileHandle - Datei-Handle
BASE CLASS
SYNOPSIS
Datei schreiben:
my $fh = Prty::FileHandle->new('>',$path);
$fh->print("Test\n");
$fh->close;
Datei lesen:
my $fh = Prty::FileHandle->new('<',$path);
while (<$fh>) {
print;
}
$fh->close;
DESCRIPTION
Ein Objekt der Klasse repräsentiert eine Dateihandle, über die Daten gelesen oder geschrieben werden können.
EXAMPLES
Zähler-Datei mit Locking:
my $fh = Prty::FileHandle->open('+>>',$file,-lock=>'EX');
$fh->seek(0);
my $count = <$fh> || "0\n";
chomp $count;
$fh->truncate;
$fh->print(++$count,"\n");
Siehe auch Prty::LockedCounter.
METHODS
Konstruktor
new() - Öffne Dateihandle
Synopsis
$fh = $class->new($mode,$path,@opt);
$fh = $class->new($globRef,@opt);
$fh = $class->new('<'); # Lesen von STDIN
$fh = $class->new('>'); # Schreiben nach STDOUT
Alias
open()
Options
- -lock => 'EX'|'SH'|'EXNB'|'SHNB' (Default: kein Lock)
-
Locke die Dateihandle nach dem Öffnen im angegebenen Lock-Modus. Folgende Lockmodes werden unterschieden: 'SH' (shared lock), 'EX' (exclusive lock). Durch den Zusatz 'NB' (also Lockmode 'SHNB' der 'EXNB') wird die Operation "non blocking" ausgeführt, d.h. wenn der Lock nicht sofort erworben werden kann, wird eine Exception ausgelöst.
Wurde die Datei vom Konstruktor geöffnet, schließt er sie, wenn der Lock nicht erworben werden kann. Andernfalls bleibt die Dateihandle geöffnet.
Description
Instantiiere Dateihandle-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Examples
Filehandle-Objekt für STDOUT:
$fh = Prty::FileHandle->new(\*STDOUT);
Lesen von STDIN:
$fh = $class->new('<');
$fh = $class->new('<','');
$fh = $class->new('<','-');
Schreiben nach STDOUT:
$fh = $class->new('>');
$fh = $class->new('>','');
$fh = $class->new('>','-');
destroy() - Schließe Dateihandle
Synopsis
$fh->destroy;
Alias
close()
Description
Schließe Dateihandle. Die Methode liefert keinen Wert zurück. Nach Aufruf der Methode ist die Objektreferenz ungültig.
Lesen
read() - Lies Daten von Dateihandle
Synopsis
$data = $fh->read($n);
Description
Lies die nächste die nächsten $n Zeichen von Dateihandle $fh und liefere diese zurück.
readLine() - Lies Zeile von Dateihandle
Synopsis
$line = $fh->readLine;
Description
Lies die nächste Zeile von Dateihandle $fh und liefere diese zurück. Schlägt dies fehl, wirf eine Exception.
readLines() - Lies mehrere Zeilen von Dateihandle
Synopsis
@lines|$lineA = $fh->readLines($n);
Description
Lies die nächsten $n Zeilen von Dateihandle $fh und liefere diese als Liste zurück. Der Zeilentrenner am Ende jeder Zeile wird entfernt. Im Skalarkontext liefere eine Referenz auf die Liste, wenn Zeilen gelesen wurden, sonst undef
.
Example
Liefere Chunks von 1000 Pfaden:
my $fh = Prty::FileHandle->new('-|',"find @$dirA -name '*.xml.gz'");
while (my $fileA = $fh->readLines(1000)) {
...
}
$fh->close;
readLineChomp() - Lies Zeile ohne Zeilentrenner von Dateihandle
Synopsis
$line = $fh->readLineChomp;
Description
Lies die nächste Zeile von Dateihandle $fh, entferne den Zeilentrenner mit chomp() und liefere das Resultat zurück.
readLineNoWhiteSpace() - Lies Zeile und entferne Whitespace am Ende
Synopsis
$line = $fh->readLineNoWhiteSpace;
Description
Lies die nächste Zeile von Dateihandle $fh, entferne jeglichen Whitespace am Zeilenende (mit s/\s+$//) und liefere das Resultat zurück.
Diese Funktion ist nützlich, wenn verschiedene Zeilentrenner CRLF oder LF vorkommen können und Zeilen nur mit Whitespace zu Leerzeilen reduziert werden sollen.
getc() - Lies nächstes Zeichen
Synopsis
$c = $fh->getc;
slurp() - Lies Rest der Datei
Synopsis
$data = $fh->slurp;
Returns
String
Description
Lies den Rest von Dateihandle $fh liefere diesen zurück.
Die Methode ist nützlich, wenn der gesamte Inhalt einer Datei ab einer bestimmten Position gelesen werden soll.
Example
Lies gesamten Inhalt einer Datei ab Position $pos:
my $fh = Prty::FileHandle->open('<',$logFile);
$fh->seek($pos);
my $data = $fh->slurp;
Schreiben
print() - Schreibe Daten auf Dateihandle
Synopsis
$fh->print(@data);
Description
Schreibe Daten @data auf Dateihandle $fh. Die Methode liefert keinen Wert zurück.
truncate() - Kürze Datei
Synopsis
$fh->truncate;
$fh->truncate($length);
Description
Kürze Datei auf Länge $length. Ist $length nicht angegeben, kürze Datei auf Länge 0.
Positionieren
seek() - Setze Position in Datei
Synopsis
$fh->seek($pos);
$fh->seek($pos,$whence);
Description
Setze die Position der Filehandle in der Datei. Die Methode liefert keinen Wert zurück. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f seek).
tell() - Liefere Position in Datei
Synopsis
$pos = $fh->tell;
Description
Liefere die Position der Filehandle in der Datei. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f tell).
Sperren
lock() - Sperre Datei
Synopsis
$fh->lock($lockMode);
Description
Locke die Datei im Lock-Modus $lockMode. Die Methode liefert keinen Wert zurück.
Folgende Lockmodes werden unterschieden:
- 'SH'
-
shared lock
- 'EX'
-
exclusive lock
- 'SHNB'
-
shared lock, non-blocking
- 'EXNB'
-
exclusive lock, non-bloking
Liefere "wahr", wenn der Lock gesetzt werden kann, im Fehlerfall liefere "falsch".
unlock() - Hebe Sperre auf
Synopsis
$fh->unlock;
Description
Hebe Sperre auf Dateihandle $fh auf. Die Methode liefert keinen Wert zurück.
Encoding
setEncoding() - Setze Encoding
Synopsis
$fh = $fh->setEncoding($encoding);
Returns
FileHandle-Objekt (für Method-Chaining)
Description
Definiere für Filehandle $fh das Encoding $encoding. D.h. alle Daten werden automatisch gemäß diesem Encoding beim Schreiben encodiert bzw. beim Lesen dekodiert.
Die Methode liefert keinen Wert zurück.
Verschiedenes
autoFlush() - Schalte Filehandle in ungepufferten Modus
Synopsis
$fh->autoFlush;
$fh->autoFlush($bool);
binmode() - Aktiviere Binärmodus oder Layer
Synopsis
$fh->binmode;
$fh->binmode($layer);
Description
Schalte Filehandle in Binärmodus oder setze Layer $layer. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f binmode).
Klassenmethoden
captureStderr() - Fange STDERR ab
Synopsis
$class->captureStderr(\$str);
Returns
Die Methode liefert keinen Wert zurrück
Description
Fange alle Ausgaben auf STDERR ab und lenke sie auf Skalarvariable $str um.
VERSION
1.122
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2018 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.