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, |