/blog/perl


substr() in Perl
[76831 mal gelesen]
foreach in Perl
[69405 mal gelesen]
open() - Dateien öffnen in Perl
[64196 mal gelesen]
Arrays in Perl - Besonderheiten
[55299 mal gelesen]
chomp() in Perl
[51723 mal gelesen]
grep - Listen durchsuchen in Perl
[46942 mal gelesen]
split() in Perl - Zeichenketten teilen
[41874 mal gelesen]
push in Perl
[40991 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[30604 mal gelesen]
print in Perl
[27662 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Donnerstag, 29.3.2007, 00:04:45 Uhr

open() - Dateien zum Lesen oder Schreiben öffnen in Perl


Mit dem Befehl open() werden in Perl Dateien zum Lesen, Schreiben oder Ausführen geöffnet.
Als Parameter werden erwartet:
  • das Dateihandle
  • der Dateiname, inklusive Pfadangaben
Mit Hilfe der >, < und |-Zeichen vor dem Dateinamen bzw. Pfadnamen kann man zusätzlich festlegen, ob eine Datei zum Lesen, Schreiben, Anbhängen oder Auführen geöffnet werden soll.
Wird nichts angegeben, wird eine Datei zum Lesen geöffnet.

Hier nochmals die einzelnen Modi:
  • >datei.txt:
    Öffnet die Datei datei.txt zum Schreiben. Sollte diese Datei bereits vorhanden sein, wird sie überschrieben. Falls nicht, wird sie neu angelegt.

  • <datei.txt:
    Öffnet eine Datei zum Lesen. Die Datei muß existieren, sonst gibts ne Fehlermeldung.

  • >>datei.txt:
    Die Datei datei.txt zum Schreiben geöffnet. Wenn die Datei bereits existiert, wird der neue Inhalt an den alten Inhalt angehängt, d.h. der alte Inhalt wird nicht gelöscht. Wenn die Datei noch nicht existiert, wird sie automatisch angelegt.

  • +>datei.txt:
    Die Datei datei.txt wird zum Lesen und zum Schreiben von Daten geöffnet.

  • |datei:
    Die Datei datei ist eine ausführbare Programmdatei oder ein Shell-Befehl. Das Programm bzw. der Befehl werden ausgeführt. Aus Unix-Sicht wird dabei eine Pipe zu dem Programm bzw. Befehl geöffnet.

  • datei|:
    Die Datei datei ist eine ausführbare Programmdatei oder ein Shell-Befehl. Das Programm bzw. der Befehl werden ausgeführt. Aus Unix-Sicht wird dabei eine Pipe von dem Programm bzw. dem Befehl geöffnet.
Wenn die Datei geöffnet werden kann, gibt die Funktion open den Wert true zurück, andernfalls den Wert undef.

open(IN,"<datei.txt");
close IN;


Öffnet die Datei datei.txt zum Lesen.


open(IN,'>'.$datei);
close IN;


Öffnet die Datei, deren Name in $datei angegeben ist, zum Schreiben. Dabei wird eine existierende Datei überschrieben, falls vorhanden. Da nach dem Öffnen die Datei sofort wieder geschlossen wird, wird eine leere Datei erzeugt.


open(IN,'<'.$datei) || die "Can not open file $datei: $!";

while(<IN>){
next if ($_=~ /^#/);
print "$_\n";
}
close IN;


Öffnet die Datei $datei, gibt eine Fehlermeldung aus, falls diese Datei nicht vorhanden ist.
Danach wird der Dateiinhalt ausgegeben. Zeilen, die mit einem # beginnen, werden dabei herausgefilter.

Vorsicht
Öffnen Sie niemals Dateien, deren Namen von einer Usereingabe bestimmt werden.
Oder vielleicht verständlicher ausgedrückt: Wenn ein Gast auf Ihrer Webseite eine Eingabe in ein Formular machen kann, die dann als Name einer Datei verwendet werden soll, sollten Sie UNBEDINGT vorher ungültige Zeichen herausfilern.
Mehr dazu hier.
Geöffnete Dateien sollte man, wenn man sie nicht mehr braucht, wieder schließen. Das spart System-Ressourcen und gibt sie für andere Prozesse frei, falls die Datei gesperrt wurde.

Große Dateien sollte man nicht erst komplett in den Speicher einlesen, um sie dann zu verarbeiten. Dies könnte den Rechner lahm legen...

Übrigens
Aus Gründen der Sicherheit sollte man die 3-Argumente-Form beim Öffnen von Dateien verwenden:

open (IN,'<',$datei);



Und nochwas
Möglich ist auch Folgendes:

open (my $IN,'<'.$datei);


Dies hat den Vorteil, daß $IN gleich eine lokale Variable darstellt und daß die Datei automatisch geschlossen wird, wenn der Block verlassen wird.
Gerade in Scripten, in denen man z.B. per require mehrere Module hinzulädt, kann man so Überschneidungen vermeiden, die oftmals schwer zu finden sind.



Thema: Perl Dateien

Der Beitrag "open() - Dateien öffnen in Perl" wurde 64197 mal gelesen.

Es wurde 19 x über diesen Beitrag abgestimmt.
Die durchschnittliche Beurteilung liegt bei
2 (1 = sehr gut - 6 = grottenschlecht).

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

Wiederholungen finden mit regulären Ausdrücken

my in Perl

Bestimmte Dateien eines Ordners suchen - Aus der Praxis - Suchen nach Dateiendung

Mathematische Funktionen in Perl - atan2(), cos(), exp(), sin(), log(), sqrt()

Neue Suchfunktion - die 2.

Arrays in Perl - Besonderheiten

push in Perl

unlink() - Dateien löschen in Perl

Wörter im Text automatisch verlinken, die endgültige Version

Umgebungsvariablen in Perl



0.0445230007171631 sec. to build


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Alex2983
Kommentar:
Super. Wenn alle so eine Beschreibung abliefern würden, wäre es ein Traum. Besten Dank
Zum Beitrag


Von: Daniel
Kommentar:
Super Tipp, habe sie jetzt auch gefunden, nur bei mir ist es leider eine 16-stellige Nummer...Was mache ich denn jetzt damit??
Zum Beitrag


Von: Mothman
Kommentar:
Im obigen Kommentar sollten in der Zeile

Zum Beitrag


Von: Mothman
Kommentar:
Mir sind seit heute noch folgende Spezialvariablen bekannt, die hier nicht aufgeführt sind:

Zum Beitrag


Von: Bastian
Kommentar:
Tja, etwas spät. Aber trotzdem.

Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juli 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
3.9.2010

Es ist
10:30:58 Uhr

Ihre IP:
38.107.191.93

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
2056680


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
12345
6789101112
13141516171819
20212223242526
27282930

Impressum