perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5598
davon online: 1
weitere User: 1
Click for quality!



25.04.2018 / 20:35

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Files und Filehandling

Das folgende Perlprogramm liest ein File und gibt den Inhalt des Files 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 ein File zum lesen. Der erste Parameter ist ein Filehandle, welcher es erlaubt, das File 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>).


Uebung

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 nützlich, die -w-Option zu verwenden, welche wir im Abschnitt Ein Programm ausführen erwähnt haben.



zurück Inhalt weiter






-
-