Latest web development tutorials

les opérations de fichiers Perl

Perl utilise une technique appelée descripteur de fichier variable pour utiliser le type de fichier.

Lire ou écrire des données à partir d'un fichier nécessite l'utilisation de descripteurs de fichiers.

poignée de fichier (descripteur de fichier) est le nom d'une des connexions E / S.

Perl fournit trois descripteurs de fichiers: STDIN, STDOUT, STDERR, représentant l'entrée standard, la sortie standard et la sortie d'erreur standard.

fichiers Perl peuvent être ouverts dans les manières suivantes:

open FILEHANDLE, EXPR
open FILEHANDLE

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

Description Paramètre:

  • DESCRIPTEUR: descripteurs de fichiers, utilisés pour stocker un identifiant unique pour le fichier.
  • EXPR: nom de fichier et le type d'accès de fichier constitué d'expression.
  • MODE: type d'accès de fichier.
  • PERMS: Bit Access (bits d'autorisation).

fonction Open

Nous utilisons la fonction de code suivant pour ouvrir un mode de lecture seule (<) pour ouvrir le fichier file.txt:

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

<Lecture seule représentation.

handle de fichier DATA code est utilisé pour lire le fichier, l'exemple suivant va ouvrir le fichier et le contenu du fichier de la sortie:

#!/usr/bin/perl

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

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

Le code suivant à écrire (>) pour ouvrir le fichier file.txt:

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

> Pour le mode d'écriture.

Si vous avez besoin d'ouvrir le fichier en mode lecture-écriture, en face> ou <caractère + signe à ajouter:

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

Cette approche ne supprime pas le contenu du fichier d'origine, si vous souhaitez supprimer le format suivant:

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

Si vous souhaitez déposer des données supplémentaires, les données supplémentaires avant, il vous suffit d'ouvrir le fichier en mode ajout:

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

>> Représente ajouter des données au fichier existant, si vous avez besoin de lire le contenu d'un fichier à ajouter à ajouter le signe +:

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

Le tableau suivant répertorie les différents modes d'accès:

mode description
<Ou r Ouvrez en lecture seule le fichier pointeur sur l'en-tête du fichier.
> Ou w Ouvrez pour écrire le fichier pointeur sur l'en-tête du fichier et la taille du fichier est coupé à zéro. Si le fichier n'existe pas, tenter de créer.
>> Ou un Ouvrez pour écrire le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, tenter de créer.
+ <Ou r + Ouvert pour la lecture et l'écriture, le pointeur de fichier à l'en-tête du fichier.
+> Ou w + Ouvert pour la lecture et l'écriture, le pointeur de fichier à l'en-tête du fichier et la taille du fichier est coupé à zéro. Si le fichier n'existe pas, tenter de créer.
>> + Ou A + Ouvrez pour la lecture et l'écriture du pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, tenter de créer.

fonction sysopen

fonctionsysopen est similaire à ouvrir la fonction, mais ils ne sont pas la même forme d'argument.

L'exemple suivant est basé sur la lecture et l'écriture (+ <filename) pour ouvrir le fichier:

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

Si vous avez besoin de mettre à jour les fichiers supprimés avant que le fichier est écrit comme suit:

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

Vous pouvez utiliser le O_CREAT pour créer un nouveau fichier, O_WRONLY écriture seule, O_RDONLY mode lecture seule.

La valeur de la propriété octal paramètres perms indique que les autorisations de fichier après la création, la valeur par défaut est 0x666.

Le tableau suivant répertorie les valeurs de mode possibles:

mode description
O_RDWR Ouvert pour la lecture et l'écriture, le pointeur de fichier à l'en-tête du fichier.
O_RDONLY Ouvrez en lecture seule le fichier pointeur sur l'en-tête du fichier.
O_WRONLY Ouvrez pour écrire le fichier pointeur sur l'en-tête du fichier et la taille du fichier est coupé à zéro. Si le fichier n'existe pas, tenter de créer.
O_CREAT Créez un fichier
O_APPEND append fichier
O_TRUNC La taille du fichier est coupé à zéro
O_EXCL Si vous utilisez fichier O_CREAT existe, il renvoie un message d'erreur, il peut vérifier si un fichier existe
O_NONBLOCK Non-blocage des opérations d'E / S afin que nous soit réussir ou retourne immédiatement une erreur, pas bloqué.

Fermer la fonction

Après utilisation dans le fichier, fermez le fichier que vous souhaitez actualiser les tampons d'entrée et de sortie poignée de fichiers associés à la fermeture du fichier a la syntaxe suivante:

close FILEHANDLE
close

FILEHANDLE pour la poignée de fichier spécifié, si avec succès revient fermé vrai.

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

Lecture et écriture de fichiers

Lire et écrire des informations dans un fichier Il existe plusieurs façons différentes:

<FILEHANDL opérateur>

La principale méthode de lecture des informations à partir d'un descripteur de fichier ouvert est <DESCRIPTEUR> opérateur. Dans un contexte scalaire, il retourne une seule ligne de la poignée de fichier. Par exemple:

#!/usr/bin/perl

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

Après la mise en œuvre de la procédure ci-dessus, les informations suivantes, nous allons entrer dans la sortie URL de l'instruction d'impression:

Lorsque nous utilisons <DESCRIPTEUR> opérateur, qui renvoie un descripteur de fichier pour chaque ligne de la liste, par exemple, nous pouvons importer toutes les lignes au tableau.

La mise en œuvre crée un fichier IMPORT.TXT, comme suit:

$ cat import.txt 
1
2
3

IMPORT.TXT et lire chaque ligne en @lines tableau:

#!/usr/bin/perl

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

Le programme ci-dessus, le résultat est:

1
2
3

fonction getc

fonction xgetc renvoie un seul caractère du DESCRIPTEUR spécifié, si vous ne spécifiez pas de STDIN de retour:

getc FILEHANDLE
getc

Si une erreur se produit, ou la poignée de fichier à la fin du fichier, il retourne undef.


fonction de lecture

fonction de lecture est utilisé pour traiter les informations lues dans la mémoire tampon de fichier.

Cette fonction permet de lire des données binaires à partir d'un fichier.

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

Description Paramètre:

  • DESCRIPTEUR: descripteurs de fichiers, utilisés pour stocker un identifiant unique pour le fichier.
  • SCALAIRE: Lancer position de lecture.
  • LONGUEUR: longueur du contenu lu.
  • OFFSET: offset.

Si retour réussi à lire le nombre d'octets lus, renvoie 0 si la fin du fichier, si une erreur se produit retourne undef.

fonction d'impression

Pour toutes les informations sont lues à partir des fonctions de poignée de fichier à l'extrémité arrière de la fonction principale est d'écrire l'impression:

print FILEHANDLE LIST
print LIST
print

Utilisez le fichier et les fonctions d'impression peuvent manipuler les résultats de l'exécution des appareils de sortie (STDOUT: sortie standard), par exemple:

print "Hello World!\n";

Copie de fichiers

L'exemple suivant, nous allons ouvrir un fichier file1.txt existant, et le lire chaque ligne écrite dans le fichier file2.txt dans:

#!/usr/bin/perl

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

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

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

Renommez le fichier

Les exemples qui suivent, nous allons déjà fichier existant file1.txt renommer file2.txt, répertoire spécifié dans le répertoire / usr / w3big / test / sous:

#!/usr/bin/perl

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

Fonctionrenomme accepte seulement deux paramètres, seul le fichier existe déjà sera renommé.

Supprimer les fichiers

Les exemples suivants illustrent la façon dont nous utilisons la fonctionunlink pour supprimer ce fichier:

#!/usr/bin/perl

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

Indiquez l'emplacement du fichier

Vous pouvez utiliser la fonctiontell pour obtenir l'emplacement du fichier, et indiquez l' emplacement dans le fichier en utilisant la fonction de recherche:

fonction dire

fonction dire est utilisée pour obtenir l'emplacement du fichier:

tell FILEHANDLE
tell

Si DESCRIPTEUR la fonction retourne la position du pointeur de fichier, en octets. Si vous ne spécifiez pas un retour à la poignée de fichier par défaut sélectionné.

fonction de recherche

seek () est utilisée pour se déplacer dans le fichier descripteur de fichier lire et écrire des pointeurs de la façon de lire ou d'écrire un fichier, en octets lire et écrire:

seek FILEHANDLE, POSITION, WHENCE

Description Paramètre:

  • DESCRIPTEUR: descripteurs de fichiers, utilisés pour stocker un identifiant unique pour le fichier.
  • POSITION: indique le nombre d'octets de descripteur de fichier (lecture-écriture pointeur de position) pour se déplacer.
  • WHENCE: représente un descripteur de fichier (lecture-écriture emplacement des pointeurs) démarre lorsque la position de départ, vous pouvez prendre une valeur de 0, 1, indiquer le début du fichier, la position actuelle et la fin du fichier.

Les exemples suivants sont à lire 256 octets à partir du début du fichier:

seek DATA, 256, 0;

Informations sur le fichier

les opérations de fichiers Perl peuvent également vérifier si un fichier existe et est en train de lire et d'écrire.

Ce que je peux créer un fichier file1.txt, comme dans le texte suivant:

$ 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";
}

Le programme ci-dessus, le résultat est:

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

Fichier opérateurs de test dans le tableau suivant:

opérateurs description
-A Le fichier est d'abord accédé temps (unités: jours)
-B Que ce soit un fichier binaire
-C Fichier (inode) inode temps de modification (unités: jours)
-M Le fichier étaient de dernière modification (unités: jours)
-O Tous les fichiers sont réels UID
-R Fichier ou répertoire peuvent être lus par UID / GID réel
-S La prise (Socket)
-T Que ce soit un fichier texte
-W Fichier ou répertoire peuvent être écrites à l'UID / GID réel
-X Les fichiers ou répertoires peuvent être exécutés UID / GID réel
-b Un (bloc spécial) fichier de bloc-spécial (comme support disque)
-c Le caractère spécial (caractères spéciaux) fichier (tels que les périphériques d'E / S)
-d annuaire
-e Nom de fichier ou répertoire existe
-f fichier ordinaire
-g Fichier ou répertoire a l'attribut setgid
-k Fichier ou répertoire a le bit sticky
-l Il est un lien symbolique
-o Tous les fichiers sont UID valide
-p Le fichier est un tube nommé (FIFO)
-r Les fichiers peuvent être effectivement UID / GID lire
-s Fichier ou répertoire existe et est pas 0 (renvoie le nombre d'octets)
-t poignée de fichier est TTY (fonction système isatty () renvoie le résultat, le nom de fichier ne peut pas utiliser ce test)
-u Fichier ou répertoire a l'attribut setuid
-w Les fichiers peuvent être écrits dans un UID valide / GID
-x Les fichiers peuvent être exécutés efficacement UID / GID
-z Le fichier existe, la taille de 0 (répertoire constant est faux), qui est, si le fichier est vide,