www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Kapitel 12: Ein- und Ausgabe

Inhalt
Synopsis
print STDOUT "Standardoutput\n";      # Normale Ausgaben
print STDERR "Error messages...\n";   # Fehlerkanal
$input = <STDIN>;                     # Benutzereingaben

open(IFH, "< infile")        or die "can't open: $!\n";
open(OFH, "> overwrite.me") or die "...: $!\n";
open(AFH, ">> appendto.me") or die "...: $!\n";
open(TOPROG, "| pietome.program")  or die "...: $!\n";
open(FROMPG, "readfromme.prog |") or die "...: $!\n";

print FH "Some output\n";
$line = <FH>; @remlines = <FH>; chomp $line; chomp @remlines;

close(FH) or die "Error while close()ing: $!\n";

{ local $/;  $allfile = <FH>; }        # Schlürfmodus
{ local $/ = ''; $paragraph = <FH>; }  # Absatz-Modus
while (<FH>) { print "$.: $_\n"; }     # Zeilennummer

# Defaulthandle ändern und Pufferung ausschalten
$ofh = select(FH);      # Defaulthandle ändern
  $| = 1;               # Pufferung auf FH aus!
  print "Hehe, this goes to FH!\n";
select($ofh);   # Alter Defaulthandle, Pufferung von FH aus!

sub myfunc { local *FH = shift; print FH "okay\n"; }
myfunc(*STDOUT);
sub retfh  { local *FH; open(FH, '...'); return *FH; }
*fh = retfh(); print fh "okay\n";

while (<>) { # Spitzeklammernoperator (Diamond-Operator)
    # Nächste Zeile aller Kommandozeilendateien
    # Aktuelle Datei: $ARGV
}

# Systemnahe Ein-/Ausgage
use Fcntl;
sysopen(FH, $fname, O_RDWR | O_CREAT, 0666) or die "...: $!\n";
$nbytes = read(FH, $buf, $wanted, $offset);
$nbytes = sysread(FH, $buf, $wanted, $offset);
$nbytes = syswrite(FH, $buf, $wanted, $offset);

# Report-Generator
write;               # Vorher Variablen vorbelegen
format STDOUT_TOP =
                      Page
                      $%
.
format STDOUT =
@<<<<<<  @<<<<<<  @||||||| @####.##
$field1, $field2, $field3, $sum
.

# Das Dateisystem
@cfiles = <*.c>;               # Fileglob
opendir(DIR, $path) or die "...: $!\n";
  # Skalarer Zugriff
  while (defined ($file = readdir(DIR))) { ... }
  # oder Listenzugriff
  @files = readdir(DIR);
closedir(DIR);

mkdir('/tmp/newdir', 0777) or die "...: $!\n";
rmdir('/tmp/emptydir')     or die "...: $!\n";

link($oldname, $newhardlink);
symlink($oldname, $newsymlink);
$followed = readlink($symlink);

# Dateitestoperatoren
print "File exists\n" if -e $fname;
-r -w -x -o -R -W -X -O -e -z -s -u -g -k -T -B
-f -d -l -p -S -b -c -t -M -A -C

($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
 $atime, $mtime, $ctime, $blksize, $blocks) = stat(FH);

unlink($fname) or die "...: $!\n";   # Datei löschen
rename($old, $new);                  # Umbenennen: =FS

# Temporäre Dateien
use IO::File;
$fh = IO::File->new_tmpfile or die "...: $!\n";

# Direkter Zugriff
seek(FH, $offset, SEEK_SET);         # SEEK_CUR, SEEK_END
$pos = tell(FH);

# Dateisperren
use Fcntl qw(:DEFAULT :flock);
flock(FH, LOCK_EX); flock(FH, LOCK_EX | LOCK_NB); # Schreiben
flock(FH, LOCK_SH); flock(FH, LOCK_SH | LOCK_NB); # Lesen
flock(FH, LOCK_UN);                  # Sperre wieder aufheben
Beispielprogramme
self-output.pl Selbstgespräche, Ausgabefilter
self-input.pl Selbstgespräche, Eingabefilter
wrapmyprog.sh Verschlüsselungswrapper mit IDEA
fortune.pl Wählt zufälligen Fortune-Satz aus
FileCache-example.pl Ermöglicht mehr offene Dateien als das System erlaubt
umask-demo.pl Zeigt die Verwendung der umask
form-demo.pl Report-Generator mit Formaten und write()
cloaked.pl Zeigt die Namen von unsichtbaren .Dateien an
file-kglob.pl Zeigt die Verwendung des File::KGlob-CPAN-Moduls
subdirs.pl Unterverzeichnisse (1. Ebene) anzeigen
traverse-dir-manual.pl Rekursives Durchlaufen eines Directory
traverse-dir-module.pl Rekursives Traversieren mit File::Find
ls.pl Mini-ls(1) mit Dateitestoperatoren
statme.pl Zeigt alle stat()-Informationen einer Dateiliste an
makehole.pl Erzeugt eine Datei mit einem Loch
showsize.pl Größe einer Datei mit File::stat stat() abfragen
touch.pl Aktualisiert die Zugriffszeit auf Dateien
wipe.pl Überschreibt Dateien vor dem 'physischen' Löschen
rename Larry's filename fixer
cisco-static-routes.pl Erzeugt bzw. entfernt statische Routen
tempfile-io.pl Temporäre Datei anlegen, ohne den Namen zu kennen
tempfile-tmpnam.pl Temporäre Datei mit bekanntem Namen
dbfile-lines.pl Zeilenweises Editieren einer Textdatei
parallel-file.pl Konkurrierender Zugriff auf eine Datei
reverse-self.pl a program that prints itself
Ergänzungen
Lösungen zu ausgewählten Übungsaufgaben

In Vorbereitung

FAQ

In Vorbereitung

Errata
Errata, 1. Nachdruck

[Prev] [Up] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:44 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo