Il miglior tutorial operazioni sui file Perl Nel 2024, in questo tutorial puoi imparare funzione Open,la funzione sysopen,Chiudere la funzione,Leggere e scrivere file,ha letto la funzione,Specificare la posizione del file,informazioni File,
Perl utilizza una tecnica chiamata handle di file variabile per operare il tipo di file.
Leggere o scrivere dati da un file richiede l'utilizzo di handle di file.
handle di file (file handle) è il nome di un connessioni I / O.
Perl fornisce tre handle di file: STDIN, STDOUT, STDERR, che rappresentano lo standard input, standard output e standard error.
file Perl possono essere aperti nei seguenti modi:
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODE
Descrizione Parametro:
Usiamo la seguente funzione di codice per aprire una modalità di sola lettura (<) per aprire il file file.txt:
open(DATA, "<file.txt");
<Sola lettura rappresentazione.
Codice handle di file dati vengono usati per leggere il file, il seguente esempio aprire il file e il contenuto del file di output:
#!/usr/bin/perl open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!"; while(<DATA>){ print "$_"; }
Il seguente codice per scrivere modo (>) per aprire il file file.txt:
open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";
> Per la modalità di scrittura.
Se è necessario aprire il file in modalità di lettura-scrittura, di fronte> o <carattere di segno + per aggiungere:
open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";
Questo approccio non elimina il contenuto del file originale, se si desidera eliminare il seguente formato:
open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";
Se si desidera archiviare dati aggiuntivi, i dati aggiuntivi prima, avete solo bisogno di aprire il file in modalità append:
open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";
>> Rappresenta aggiungere dati al file esistente, se avete bisogno di leggere il contenuto di un file da aggiungere per aggiungere il segno +:
open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";
La seguente tabella elenca le diverse modalità di accesso:
modo | descrizione |
---|---|
<O R | Apre in sola lettura il puntatore del file per l'intestazione del file. |
> O w | Aprire per la scrittura il puntatore del file per l'intestazione del file e la dimensione del file viene tagliato a zero. Se il file non esiste, tentare di creare. |
>> O un | Aprire per la scrittura del puntatore del file alla fine del file. Se il file non esiste, tentare di creare. |
+ <O R + | Aperto per la lettura e la scrittura, il puntatore del file per l'intestazione del file. |
+> O w + | Aperto per la lettura e la scrittura, il puntatore del file per l'intestazione del file e la dimensione del file viene tagliato a zero. Se il file non esiste, tentare di creare. |
>> + O A + | Aperto per la lettura e la scrittura del puntatore del file alla fine del file. Se il file non esiste, tentare di creare. |
la funzionesysopen è simile alla funzione di apertura, ma non sono la stessa forma di argomentazione.
L'esempio che segue si basa sulla lettura e la scrittura (+ <filename) modo per aprire il file:
sysopen(DATA, "file.txt", O_RDWR);
Se è necessario aggiornare i file svuotati prima che il file è scritto come segue:
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
È possibile utilizzare il O_CREAT per creare un nuovo file, O_WRONLY sola scrittura modalità, O_RDONLY modalità di sola lettura.
Il valore dellaproprietà ottale parametri permanenti indica che i permessi dei file dopo la creazione, il valore predefinito è0x666.
Nella tabella seguente sono elencati i valori possibili modalità:
modo | descrizione |
---|---|
O_RDWR | Aperto per la lettura e la scrittura, il puntatore del file per l'intestazione del file. |
O_RDONLY | Apre in sola lettura il puntatore del file per l'intestazione del file. |
O_WRONLY | Aprire per la scrittura il puntatore del file per l'intestazione del file e la dimensione del file viene tagliato a zero. Se il file non esiste, tentare di creare. |
O_CREAT | Creare un file |
O_APPEND | Aggiunge file |
O_TRUNC | La dimensione del file è tagliata a zero |
O_EXCL | Se si utilizza il file esiste O_CREAT, restituisce un messaggio di errore, è possibile verificare se esiste un file |
O_NONBLOCK | Non bloccante operazioni di I / O in modo che ci sia successo o restituisce immediatamente un errore, non bloccato. |
Dopo l'uso del file, chiudere il file che si desidera aggiornare i buffer di ingresso e di uscita manico file associato di chiudere il file ha la seguente sintassi:
close FILEHANDLE close
FILEHANDLE per l'handle di file specificato, se con successo restituisce chiuso vero.
close(DATA) || die "无法关闭文件";
Leggere e scrivere informazioni in un file Ci sono diversi modi:
Il principale metodo di lettura di informazioni da un handle di file aperto è <FILEHANDLE> operatore. In un contesto scalare, restituisce una singola riga dal file handle. Ad esempio:
#!/usr/bin/perl print "本教程网址?\n"; $name = <STDIN>; print "网址:$name\n";
Dopo l'applicazione della procedura di cui sopra, le seguenti informazioni, che entrerà l'uscita URL istruzione print:
Quando usiamo operatore <FILEHANDLE>, che restituisce un handle di file per ogni riga della lista, per esempio, siamo in grado di importare tutte le linee per l'array.
Attuazione crea un file import.txt, come segue:
$ cat import.txt 1 2 3
Import.txt e leggere ogni riga in @linee matrice:
#!/usr/bin/perl open(DATA,"<import.txt") or die "无法打开数据"; @lines = <DATA>; print @lines; # 输出数组内容 close(DATA);
Il programma precedente, l'uscita è:
1 2 3
Funzione xgetc restituisce un singolo carattere dal FILEHANDLE specificato, se non si specifica un STDIN ritorno:
getc FILEHANDLE getc
Se si verifica un errore, o l'handle di file alla fine del file, restituisce undef.
Leggere funzione viene utilizzata per gestire le informazioni lette dal buffer di file.
Questa funzione viene utilizzata per leggere i dati binari da un file.
read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH
Descrizione Parametro:
Se ritorno di successo per leggere il numero di byte letti, restituisce 0 se la fine del file, in caso di errore di ritorno undef.
Per tutte le informazioni vengono lette dalle funzioni di gestione del file in corrispondenza dell'estremità posteriore della funzione principale è di scrivere stampa:
print FILEHANDLE LIST print LIST print
Utilizzare il file e funzioni di stampa in grado di gestire i risultati dell'esecuzione agli apparati di output (stdout: sullo standard output), ad esempio:
print "Hello World!\n";
L'esempio seguente si aprirà un file1.txt file esistente, e leggere ogni riga scritta al file2.txt file in:
#!/usr/bin/perl # 只读方式打开文件 open(DATA1, "<file1.txt"); # 打开新文件并写入 open(DATA2, ">file2.txt"); # 拷贝数据 while(<DATA1>) { print DATA2 $_; } close( DATA1 ); close( DATA2 );
Gli esempi che seguono, ti già file esistente file1.txt rinominare file2.txt, directory specificata in / usr / w3big / test / sotto:
#!/usr/bin/perl rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );
Funzionerinomina accetta solo due parametri, solo il file esiste già verrà rinominato.
I seguenti esempi dimostrano come utilizziamo la funzioneunlink per cancellare questo file:
#!/usr/bin/perl unlink ("/usr/w3big/test/file1.txt");
È possibile utilizzare la funzionedicono di ottenere la posizione del file e specificare la posizione all'interno del file utilizzando la funzione di cercare:
funzione di dire è utilizzato per ottenere la posizione del file:
tell FILEHANDLE tell
Se FILEHANDLE la funzione restituisce la posizione del puntatore del file, in byte. Se non si specifica un ritorno alla maniglia file predefinito selezionato.
seek () viene utilizzato per spostarsi attraverso il file handle di file in lettura e scrittura puntatori il modo di leggere o scrivere un file, in byte leggere e scrivere:
seek FILEHANDLE, POSITION, WHENCE
Descrizione Parametro:
I seguenti esempi sono da leggere 256 byte dall'inizio del file:
seek DATA, 256, 0;
operazioni sui file Perl può anche verificare se esiste un file ed è la lettura e la scrittura.
Quello che posso creare il file file1.txt, come ad esempio all'interno del seguente:
$ cat file1.txt www.w3write.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"; }
Il programma precedente, l'uscita è:
file1.txt 信息:是一个文本文件, 15 字节
File operatori di prova nella seguente tabella:
operatori | descrizione |
---|---|
-A | volta che il file viene prima accede (unità: giorni) |
-B | Che si tratti di un file binario |
-C | FILE (inode) inode tempo modifica (unità: giorni) |
-M | Il file erano dell'ultima modifica (unità: giorni) |
-O | Tutti i file sono reali UID |
-R | File o directory possono essere letti da vero e proprio UID / GID |
-S | La presa (Socket) |
-T | Che si tratti di un file di testo |
-W | File o directory possono essere scritti al vero UID / GID |
-X | I file o le directory possono essere eseguiti reale UID / GID |
-b | Un file di blocchi speciali (blocco speciale) (come ad esempio mount disco) |
-c | Il carattere speciale-(caratteri speciali) file (come ad esempio i dispositivi di I / O) |
-d | elenco |
-e | File o esiste il nome della directory |
-f | file ordinario |
-g | File o la directory l'attributo setgid |
-k | File o la directory lo sticky bit |
-l | Si tratta di un link simbolico |
-o | Tutti i file sono UID validi |
-p | Il file è una named pipe (FIFO) |
-r | I file possono essere efficacemente UID / GID leggere |
-s | File o directory esiste e non è 0 (restituisce il numero di byte) |
-t | handle di file è TTY (funzione isatty sistema () restituisce il risultato, il nome del file non può utilizzare questo test) |
-u | File o la directory l'attributo setuid |
-w | I file possono essere scritti in un valido UID / GID |
-x | I file possono essere eseguiti in modo efficace UID / GID |
-z | esiste file, la dimensione di 0 (directory costante è false), cioè se il file è vuoto, |