Prty::FileHandle - Datei-Handle
Prty::Object
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;
Ein Objekt der Klasse repräsentiert eine Dateihandle, über die Daten gelesen oder geschrieben werden können.
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.
$fh = $class->new($mode,$path,@opt); $fh = $class->new($globRef,@opt); $fh = $class->new('<'); # Lesen von STDIN $fh = $class->new('>'); # Schreiben nach STDOUT
open()
Instantiiere Dateihandle-Objekt und liefere eine Referenz auf dieses Objekt zurück.
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.
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('>','-');
$fh->destroy;
close()
Schließe Dateihandle. Die Methode liefert keinen Wert zurück. Nach Aufruf der Methode ist die Objektreferenz ungültig.
$data = $fh->read($n);
Lies die nächste die nächsten $n Zeichen von Dateihandle $fh und liefere diese zurück.
$line = $fh->readLine;
Lies die nächste Zeile von Dateihandle $fh und liefere diese zurück. Schlägt dies fehl, wirf eine Exception.
@lines|$lineA = $fh->readLines($n);
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.
undef
Liefere Chunks von 1000 Pfaden:
my $fh = Prty::FileHandle->new('-|',"find @$dirA -name '*.xml.gz'"); while (my $fileA = $fh->readLines(1000)) { ... } $fh->close;
$line = $fh->readLineChomp;
Lies die nächste Zeile von Dateihandle $fh, entferne den Zeilentrenner mit chomp() und liefere das Resultat zurück.
$line = $fh->readLineNoWhiteSpace;
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.
$c = $fh->getc;
$data = $fh->slurp;
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.
String
Lies gesamten Inhalt einer Datei ab Position $pos:
my $fh = Prty::FileHandle->open('<',$logFile); $fh->seek($pos); my $data = $fh->slurp;
$fh->print(@data);
Schreibe Daten @data auf Dateihandle $fh. Die Methode liefert keinen Wert zurück.
$fh->truncate; $fh->truncate($length);
Kürze Datei auf Länge $length. Ist $length nicht angegeben, kürze Datei auf Länge 0.
$fh->seek($pos); $fh->seek($pos,$whence);
Setze die Position der Filehandle in der Datei. Die Methode liefert keinen Wert zurück. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f seek).
$pos = $fh->tell;
Liefere die Position der Filehandle in der Datei. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f tell).
$fh->lock($lockMode);
Locke die Datei im Lock-Modus $lockMode. Die Methode liefert keinen Wert zurück.
Folgende Lockmodes werden unterschieden:
shared lock
exclusive lock
shared lock, non-blocking
exclusive lock, non-bloking
Liefere "wahr", wenn der Lock gesetzt werden kann, im Fehlerfall liefere "falsch".
$fh->unlock;
Hebe Sperre auf Dateihandle $fh auf. Die Methode liefert keinen Wert zurück.
$fh = $fh->setEncoding($encoding);
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.
FileHandle-Objekt (für Method-Chaining)
$fh->autoFlush; $fh->autoFlush($bool);
$fh->binmode; $fh->binmode($layer);
Schalte Filehandle in Binärmodus oder setze Layer $layer. Genaue Funktionsbeschreibung siehe Perl-Dokumentation (perldoc -f binmode).
$class->captureStderr(\$str);
Fange alle Ausgaben auf STDERR ab und lenke sie auf Skalarvariable $str um.
Die Methode liefert keinen Wert zurrück
1.105
Frank Seitz, http://fseitz.de/
Copyright (C) 2017 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.