Das folgende Perlprogramm liest eine Datei ein und gibt den Inhalt der Datei aus.
#!/usr/local/bin/perl
#
# Program to open the password file, read it in,
# print it, and close it again.
$file = '/etc/passwd'; # Filename zuweisen
open(INFO, $file); # File öffnen
@lines = <INFO>; # in Array einlesen
close(INFO); # File schliessen
print @lines; # Array ausgeben
Die Funktion open
öffnet eine Datei zum lesen.
Der erste Parameter ist ein Filehandle, welcher es erlaubt, die Datei in Zukunft zu referenzieren.
Der zweite Parameter ist ein Ausdruck, der den Filenamen bezeichnet.
Die Funktion close
schliesst das File.
Selbstverständlich möchten wir nicht nur Files lesen, sondern auch schreiben oder
etwas zu einem File hinzufügen können.
Die Verwendung des richtigen Prefix zum Filenamen der Funktion open
erlaubt diese Dinge:
open(INFO, $file); # Lesen
open(INFO, ">$file"); # Schreiben
open(INFO, ">>$file"); # Anhängen
open(INFO, "<$file"); # Lesen
Um etwas in ein geöffnetes File zu schreiben, verwenden wir die Funktion print
mit einem zusätzlichen Parameter, dem Filehandle:
print INFO "This line goes to the file.\n";
Dieser Ausdruck schreibt in File mit Filehandle INFO
obiger Text zwischen Hochkommas.
Beachte: Es darf kein Komma nach INFO
stehen! Zwecks besserer Lesbarkeit werden
Filehandles mit Grossbuchstaben bezeichnet.
Im obigen Programm wird ein File eingelesen. Der Filehandle ist INFO
und um es
einzulesen verwendet man spitze Klammern. Der Ausdruck
@lines = <INFO>;
liest das File in den Array @lines
. Beachte, dass das gesamte File auf's Mal eingelesen
wird. Der Grund liegt im Array-Kontext. Falls @lines
durch die skalare Variable $line
ersetzt würde, würde nur eine Zeile eingelesen und beim nächsten Aufruf die nächste.
$line
speichert die ganze Zeile inklusive Newline-Character.
Die Filehandles STDIN
, STDOUT
und STDERR
sind vordefiniert.
Defaultmässig schreibt print
auf STDOUT
und <>
liest von STDIN
( <>
ist äquivalent zu <STDIN>
).
Wir ändern das obige Programm, sodass das ganze File mit einem #
-Symbol am Anfang
jeder Zeile ausgegeben wird. Dazu sollte nur eine Zeile zum Programm hinzugefügt und eine weitere geändert werden müssen.
Wir verwenden dazu die Spezialvariable $"
.
Mit Files können unvorhergesehene Dinge geschehen, deshalb ist es unabdingbar, die Zeilen use strict;
und use warnings;
zu Beginn in unser Programm aufzunehmen, die wir im Abschnitt Ein Programm ausführen erwähnt haben.