Latest web development tutorials

Perl Dateioperationen

Perl verwendet eine Technik variablen Datei genannt die Art der Datei zu arbeiten.

Lesen oder Schreiben von Daten aus einer Datei die Verwendung von Datei-Handles erfordert.

Datei-Handle (Datei-Handle) ist der Name eines E / A-Anschlüsse.

Perl bietet drei Datei-Handles: STDIN, STDOUT, STDERR, was der Standardeingabe, Standardausgabe und Standardfehlerausgabe.

Perl-Dateien können auf folgende Weise geöffnet werden:

open FILEHANDLE, EXPR
open FILEHANDLE

sysopen FILEHANDLE, FILENAME, MODE, PERMS
sysopen FILEHANDLE, FILENAME, MODE

Parameter Beschreibung:

  • FILEHANDLE: Datei-Handles, verwendet, um eine eindeutige Kennung für die Datei zu speichern.
  • EXPR: Dateiname und Dateizugriffstyp des Ausdrucks aus.
  • MODE: Dateizugriffstyp.
  • Perms: Zugriff Bit (Berechtigungs-Bits).

Öffnen Sie die Funktion

Wir verwenden den folgenden Code Funktion einen Nur-Lese-Modus zu öffnen (<), um die Datei file.txt zu öffnen:

open(DATA, "<file.txt");

<Read-only - Darstellung.

Codedaten Datei-Handle wird verwendet, um die Datei zu lesen, das folgende Beispiel die Datei und den Dateiinhalt des Ausgangs geöffnet:

#!/usr/bin/perl

open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!";

while(<DATA>){
   print "$_";
}

Der folgende Code zu schreiben (>) Möglichkeit, die Datei file.txt zu öffnen:

open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";

> Für Schreibmodus.

Wenn Sie die Datei in Lese-Schreib-Modus zu öffnen müssen, vor> oder <Zeichen + Zeichen hinzuzufügen:

open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";

Dieser Ansatz wird nicht gelöscht den ursprünglichen Dateiinhalt, wenn Sie das folgende Format löschen möchten:

open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";

Wenn Sie weitere Daten einreichen wollen, bevor die zusätzlichen Daten, müssen Sie nur die Datei im Zufügen-Modus zu öffnen:

open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";

>> Stellt Daten an die vorhandene Datei anhängen, wenn Sie den Inhalt einer Datei zu lesen, müssen anhängen das + -Zeichen hinzuzufügen:

open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";

Die folgende Tabelle listet die verschiedenen Zugriffsarten:

Modus Beschreibung
<Oder r Öffnen Sie nur den Dateizeiger auf den Datei-Header zu lesen.
> Oder w Öffnen Sie zum Schreiben der Dateizeiger auf den Datei-Header und die Dateigröße geschnitten wird auf Null gesetzt. Wenn die Datei versucht, nicht vorhanden ist, zu schaffen.
>> Oder ein Öffnen zum Schreiben der Dateizeiger am Ende der Datei. Wenn die Datei versucht, nicht vorhanden ist, zu schaffen.
+ <Oder R + Öffnen Sie zum Lesen und Schreiben, der Dateizeiger auf den Datei-Header.
+> Oder w + Öffnen Sie für das Lesen und Schreiben wird der Dateizeiger auf den Datei-Header und die Dateigröße auf Null senken. Wenn die Datei versucht, nicht vorhanden ist, zu schaffen.
>> + Oder A + Öffnen Sie für das Lesen und Schreiben der Dateizeiger am Ende der Datei. Wenn die Datei versucht, nicht vorhanden ist, zu schaffen.

sysopen Funktion

sysopen Funktion ist eine ähnliche Funktion zu öffnen, aber sie sind nicht die gleiche Form der Argumentation.

Das folgende Beispiel basiert auf Lesen und Schreiben (+ <Dateiname) Weg, um die Datei zu öffnen:

sysopen(DATA, "file.txt", O_RDWR);

Wenn Sie Dateien geleert aktualisieren müssen, bevor die Datei wird wie folgt geschrieben:

sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );

Sie können die O_CREAT verwenden, um eine neue Datei zu erstellen, O_WRONLY schreibgeschützten Modus O_RDONLY Nur-Lese-Modus.

Die Perms Parameter Oktal Eigenschaftswert zeigt an, dass die Dateiberechtigungen nach der Erstellung der Standard 0x666 ist.

Die folgende Tabelle listet die möglichen Modus Werte:

Modus Beschreibung
O_RDWR Öffnen Sie zum Lesen und Schreiben, der Dateizeiger auf den Datei-Header.
O_RDONLY Öffnen Sie nur den Dateizeiger auf den Datei-Header zu lesen.
O_WRONLY Öffnen Sie zum Schreiben der Dateizeiger auf den Datei-Header und die Dateigröße geschnitten wird auf Null gesetzt. Wenn die Datei versucht, nicht vorhanden ist, zu schaffen.
O_CREAT Erstellen Sie eine Datei
O_APPEND Datei anhängen
O_TRUNC Die Dateigröße wird geschnitten auf Null
O_EXCL Wenn Sie O_CREAT Datei vorhanden ist verwenden, gibt es eine Fehlermeldung, kann es prüfen, ob eine Datei vorhanden ist
O_NONBLOCK Nicht blockierende I / O-Operationen, so dass wir entweder Erfolg oder sofort einen Fehler zurückgibt, nicht blockiert.

Close-Funktion

Nach dem Gebrauch in der Datei, die Datei schließen möchten Sie die Datei-Handle Eingangs- und Ausgangspuffer mit Schließen der Datei hat die folgende Syntax assoziiert zu aktualisieren:

close FILEHANDLE
close

FILEHANDLE für die angegebene Datei-Handle, wenn erfolgreich geschlossen true zurück.

close(DATA) || die "无法关闭文件";

Lesen und Schreiben von Dateien

Lesen und Schreiben von Informationen in einer Datei Es gibt verschiedene Möglichkeiten sind:

<FILEHANDL Operator>

Die wichtigste Methode, um Informationen aus einer geöffneten Datei-Handle des Lesens ist <FILEHANDLE> Operator. Im skalaren Kontext gibt es nur eine einzige Zeile aus dem Datei-Handle. Zum Beispiel:

#!/usr/bin/perl

print "本教程网址?\n";
$name = <STDIN>;
print "网址:$name\n";

Nach der Durchführung der oben genannten Verfahren, die folgenden Informationen, werden wir die URL print-Anweisung Ausgabe eingeben:

Wenn wir <FILEHANDLE> Operator verwenden, die für jede Zeile in der Liste eine Datei-Handle zurückgibt, zum Beispiel, können wir alle Linien auf dem Array importieren.

Die Umsetzung schafft import.txt Datei wie folgt:

$ cat import.txt 
1
2
3

Import.txt und jede Zeile in @lines Array lesen:

#!/usr/bin/perl

open(DATA,"<import.txt") or die "无法打开数据";
@lines = <DATA>;
print @lines;    # 输出数组内容
close(DATA);

Das obige Programm, das Ausgabe ist:

1
2
3

getc Funktion

xgetc Funktion gibt ein einzelnes Zeichen aus dem angegebenen FILEHANDLE, wenn Sie nicht über eine Rückkehr STDIN angeben:

getc FILEHANDLE
getc

Wenn ein Fehler auftritt, oder das Datei-Handle am Ende der Datei, gibt sie undef.


Lesefunktion

Lesefunktion wird verwendet, um die Informationen zu verarbeiten aus dem Dateipuffer gelesen.

Diese Funktion wird verwendet, um binäre Daten aus einer Datei zu lesen.

read FILEHANDLE, SCALAR, LENGTH, OFFSET
read FILEHANDLE, SCALAR, LENGTH

Parameter Beschreibung:

  • FILEHANDLE: Datei-Handles, verwendet, um eine eindeutige Kennung für die Datei zu speichern.
  • SCALAR: Startposition zu lesen.
  • LÄNGE: Inhalt Länge lesen.
  • OFFSET: Offset.

Wenn erfolgreiche Rückkehr die Anzahl der gelesenen Bytes zu lesen, liefert 0, wenn das Ende der Datei, wenn ein Fehler auftritt undef zurück.

Druckfunktion

Für alle Informationen aus den Datei-Handle-Funktionen am hinteren Ende der Hauptfunktion gelesen wird, Druck zu schreiben:

print FILEHANDLE LIST
print LIST
print

Verwenden Sie die Datei- und Druckerfunktionen verarbeiten kann die Ergebnisse der Ausführung zu den Ausgabegeräten (STDOUT: Standardausgabe), zum Beispiel:

print "Hello World!\n";

Datei-Kopie

Im folgenden Beispiel werden wir eine vorhandene Datei file1.txt, öffnen und jede Zeile in die Datei geschrieben file2.txt lesen:

#!/usr/bin/perl

# 只读方式打开文件
open(DATA1, "<file1.txt");

# 打开新文件并写入
open(DATA2, ">file2.txt");

# 拷贝数据
while(<DATA1>)
{
   print DATA2 $_;
}
close( DATA1 );
close( DATA2 );

Benennen Sie die Datei

Die folgenden Beispiele werden wir bereits vorhandene Datei file2.txt, Verzeichnis file1.txt umbenennen im Verzeichnis / usr / angegeben w3big / test / unter:

#!/usr/bin/perl

rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );

Funktionumbenennt akzeptiert nur zwei Parameter, nur die Datei bereits existiert wird umbenannt.

löschen von Dateien

Die folgenden Beispiele zeigen , wie wir dieunlink - Funktion verwenden diese Datei zu löschen:

#!/usr/bin/perl

unlink ("/usr/w3big/test/file1.txt");

Geben Sie den Speicherort der Datei

Sie können dietell - Funktion verwenden , um die Position der Datei zu erhalten, und geben Sie Ort innerhalb der Datei durch die Funktion seek:

sagen Funktion

sagen Funktion verwendet wird, den Speicherort der Datei zu erhalten:

tell FILEHANDLE
tell

Wenn FILEHANDLE gibt die Funktion die Position des Dateizeigers in Byte. Wenn Sie nicht angeben, eine Rückkehr zu den Standard ausgewählte Datei-Handle.

Suchfunktion

(Suchen) Funktion verwendet wird, durch die Datei-Handle-Datei zu verschieben lesen und Zeiger die Art und Weise schreiben zu lesen oder eine Datei zu schreiben, in Bytes lesen und schreiben:

seek FILEHANDLE, POSITION, WHENCE

Parameter Beschreibung:

  • FILEHANDLE: Datei-Handles, verwendet, um eine eindeutige Kennung für die Datei zu speichern.
  • POSITION: gibt die Anzahl der Bytes der Datei-Handle (Lese-Schreib-Positionszeiger) zu bewegen.
  • WHENCE: steht für ein Datei-Handle (Lese-Schreib-Stellenzeiger) gestartet werden, wenn die Startposition, ein Wert von 0 annehmen kann, 1, der Anfang der Datei bezeichnen, die aktuelle Position und das Ende der Datei.

Die folgenden Beispiele sind 256 Bytes vom Anfang der Datei zu lesen:

seek DATA, 256, 0;

Datei-Information

Perl Dateioperationen können auch testen, ob eine Datei vorhanden ist und das Lesen und Schreiben.

Was kann ich file1.txt Datei, wie in der folgenden erstellen:

$ cat file1.txt 
www.w3big.com
#/usr/bin/perl

my $file = "/usr/test/w3big/file1.txt";
my (@description, $size);
if (-e $file)
{
	push @description, '是一个二进制文件' if (-B _);
	push @description, '是一个socket(套接字)' if (-S _);
	push @description, '是一个文本文件' if (-T _);
	push @description, '是一个特殊块文件' if (-b _);
	push @description, '是一个特殊字符文件' if (-c _);
	push @description, '是一个目录' if (-d _);
	push @description, '文件存在' if (-x _);
	push @description, (($size = -s _)) ? "$size 字节" : '空';
	print "$file 信息:", join(', ',@description),"\n";
}

Das obige Programm, das Ausgabe ist:

file1.txt 信息:是一个文本文件, 15 字节

Dateitestteilnehmer in der folgenden Tabelle:

Die Betreiber Beschreibung
-A Die Datei wird zuerst zugegriffen Zeit (Einheit: Tage)
-B Ob es sich um eine Binärdatei
-C Datei (Inode) Inode-Änderungszeit (Einheit: Tage)
-M Die Datei der letzten Änderung Zeit (Einheit: Tage)
-O Alle Dateien sind reale UID
-R Datei oder das Verzeichnis kann durch reale UID / GID gelesen werden
-S Der Sockel (Sockel)
-T Ob es sich um eine Textdatei
-W Datei oder eines Verzeichnisses kann auf die reale UID / GID geschrieben werden
-X Dateien oder Verzeichnisse können real sein UID ausgeführt / GID
-b Ein Block-Spezial (Sonderblock) Datei (wie zum Beispiel Mount-Disk)
-c Der Charakter-Sonder (Sonderzeichen) Datei (wie zB E / A-Geräte)
-d Verzeichnis
-e Datei- oder Verzeichnisname existiert
-f Gewöhnliche Datei
-g Datei oder das Verzeichnis hat das setgid Attribut
-k Datei oder das Verzeichnis hat das Sticky-Bit
-l Es ist ein symbolischer Link
-o Alle Dateien sind gültig UID
-p Die Datei ist eine benannte Pipe (FIFO)
-r Die Dateien können effektiv UID / GID sein lesen
-s Datei oder das Verzeichnis existiert und nicht 0 (gibt die Anzahl der Bytes)
-t Datei-Handle ist TTY (Systemfunktion isatty () gibt das Ergebnis, der Dateiname nicht diesen Test verwenden)
-u Datei oder das Verzeichnis hat das Attribut setuid
-w Die Dateien können auf eine gültige UID / GID geschrieben werden
-x Die Dateien können effektiv UID / GID ausgeführt werden
-Z Datei vorhanden ist, um die Größe von 0 (Konstante Verzeichnis ist falsch), das heißt, ob die Datei leer ist,