Latest web development tutorials

operazioni sui file Perl

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:

  • FILEHANDLE: handle di file, utilizzato per memorizzare un identificatore univoco per il file.
  • ESPRESSIONE: nome del file e il tipo di accesso ai file che consiste di espressione.
  • MODALITA ': file di tipo di accesso.
  • PERMESSI: Bit di accesso (bit dei permessi).

funzione Open

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 funzione sysopen

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.

Chiudere la funzione

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 file

Leggere e scrivere informazioni in un file Ci sono diversi modi:

<FILEHANDL> operatore

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

la funzione getc

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.


ha letto la funzione

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:

  • FILEHANDLE: handle di file, utilizzato per memorizzare un identificatore univoco per il file.
  • SCALARE iniziare a leggere la posizione.
  • LUNGHEZZA: lunghezza del contenuto letto.
  • OFFSET: offset.

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.

funzione di stampa

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

copia di file

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 );

Rinominare il file

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.

Elimina file

I seguenti esempi dimostrano come utilizziamo la funzioneunlink per cancellare questo file:

#!/usr/bin/perl

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

Specificare la posizione del file

È possibile utilizzare la funzionedicono di ottenere la posizione del file e specificare la posizione all'interno del file utilizzando la funzione di cercare:

funzione dire

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.

funzione di ricercare

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:

  • FILEHANDLE: handle di file, utilizzato per memorizzare un identificatore univoco per il file.
  • POSIZIONE: indica il numero di byte di handle di file (lettura e scrittura puntatore position) per spostarsi.
  • DA_DOVE: rappresenta un handle file (lettura-scrittura spilli puntatori) inizia quando la posizione di partenza, si può avere un valore di 0, 1; indicare l'inizio del file, la posizione attuale e la fine del file.

I seguenti esempi sono da leggere 256 byte dall'inizio del file:

seek DATA, 256, 0;

informazioni File

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

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,