operações de arquivo Perl
Perl usa uma técnica chamada identificador de arquivo variável para operar o tipo de arquivo.
Ler ou escrever dados de um arquivo requer o uso de identificadores de arquivo.
identificador de arquivo (identificador de arquivo) é o nome de um conexões I / O.
Perl fornece três identificadores de arquivo: STDIN, STDOUT, STDERR, representando a entrada padrão, saída padrão e saída de erro padrão.
arquivos Perl pode ser aberta das seguintes maneiras:
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODE
Parâmetro Descrição:
- FILEHANDLE: identificadores de arquivo, usados para armazenar um identificador exclusivo para o arquivo.
- EXPR: nome do arquivo e tipo de acesso de arquivo consistindo de expressão.
- MODE: arquivo tipo de acesso.
- PERMS: Bit Access (bits de permissão).
função Open
Nós usamos a seguinte função código para abrir um modo de somente leitura (<) para abrir o file.txt file:
open(DATA, "<file.txt");
<Somente leitura representação.
Código identificador de arquivo de dados é usado para ler o arquivo, o exemplo a seguir irá abrir o arquivo e o conteúdo da saída de arquivo:
#!/usr/bin/perl open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!"; while(<DATA>){ print "$_"; }
O código a seguir para escrever maneira (>) para abrir o file.txt file:
open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";
> Para o modo de gravação.
Se você precisa para abrir o arquivo em modo de leitura e escrita, em frente> ou <character + sinal de acrescentar:
open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";
Esta abordagem não exclui o conteúdo do arquivo original, se você deseja excluir o seguinte formato:
open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";
Se você quiser apresentar dados adicionais, os dados adicionais antes, você só precisa abrir o arquivo em modo de adição:
open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";
>> Representa acrescentar dados ao arquivo existente, se você precisa ler o conteúdo de um arquivo para anexar para adicionar o sinal +:
open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";
A tabela a seguir lista os diferentes modos de acesso:
modo | descrição |
---|---|
<Ou R | Abra somente para leitura do ponteiro do arquivo para o cabeçalho do arquivo. |
> Ou w | Abra para escrever o ponteiro do arquivo para o cabeçalho do arquivo eo tamanho do arquivo é reduzido para zero. Se o arquivo não existir, tenta criar. |
Ou um >> | Abra para escrever o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criar. |
+ <Ou R + | Abrir para leitura e escrita, o ponteiro arquivo para o cabeçalho do arquivo. |
+> Ou W + | Abre para leitura e escrita, o ponteiro arquivo para o cabeçalho do arquivo eo tamanho do arquivo é reduzido para zero. Se o arquivo não existir, tenta criar. |
>> + Ou A + | Abrir para ler e escrever o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criar. |
função sysopen
funçãosysopen é semelhante à função de abrir, mas eles não são a mesma forma de argumento.
O exemplo a seguir é baseado em leitura e escrita (+ <filename) maneira de abrir o arquivo:
sysopen(DATA, "file.txt", O_RDWR);
Se você precisa atualizar arquivos esvaziados antes do arquivo é escrito como segue:
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
Você pode usar o O_CREAT para criar um novo arquivo, O_WRONLY somente gravação modo, O_RDONLY modo somente leitura.
Os parâmetros PERMS valor da propriedade octal indica que as permissões de arquivo após a criação, o padrão é 0x666.
A tabela a seguir lista os possíveis valores de modo:
modo | descrição |
---|---|
O_RDWR | Abrir para leitura e escrita, o ponteiro arquivo para o cabeçalho do arquivo. |
O_RDONLY | Abra somente para leitura do ponteiro do arquivo para o cabeçalho do arquivo. |
O_WRONLY | Abra para escrever o ponteiro do arquivo para o cabeçalho do arquivo eo tamanho do arquivo é reduzido para zero. Se o arquivo não existir, tenta criar. |
O_CREAT | Crie um arquivo |
O_APPEND | anexar Arquivo |
O_TRUNC | O tamanho do arquivo é reduzido a zero |
O_EXCL | Se você estiver usando o arquivo existe O_CREAT, ele retorna uma mensagem de erro, pode testar se um arquivo existe |
O_NONBLOCK | Non-blocking I / O operações para que quer ter sucesso ou imediatamente retorna um erro, não está bloqueado. |
Fechar função
Após o uso no arquivo, feche o arquivo que você deseja atualizar os buffers de entrada e saída de identificador de arquivo associadas a fechar o arquivo tem a seguinte sintaxe:
close FILEHANDLE close
FILEHANDLE para o identificador de arquivo especificado, se com sucesso fechou retorna verdadeiro.
close(DATA) || die "无法关闭文件";
Leitura e Escrita de Arquivos
Ler e gravar informações em um arquivo Existem várias maneiras diferentes:
<FILEHANDL operador>
O principal método de leitura de informações a partir de um handle de arquivo aberto é <FILEHANDLE> operador. No contexto escalar, ele retorna uma única linha do identificador de arquivo. Por exemplo:
#!/usr/bin/perl print "本教程网址?\n"; $name = <STDIN>; print "网址:$name\n";
Após a aplicação do procedimento acima, as seguintes informações, entraremos a saída URL declaração de impressão:
Quando usamos operador <FILEHANDLE>, que retorna um identificador de arquivo para cada linha na lista, por exemplo, podemos importar todas as linhas para a matriz.
Implementação cria arquivo IMPORT.TXT, como segue:
$ cat import.txt 1 2 3
Import.txt e ler cada linha em array @lines:
#!/usr/bin/perl open(DATA,"<import.txt") or die "无法打开数据"; @lines = <DATA>; print @lines; # 输出数组内容 close(DATA);
O programa acima, a saída é:
1 2 3
função getc
função xgetc retorna um único personagem do FILEHANDLE especificado, se você não especificar um STDIN retorno:
getc FILEHANDLE getc
Se ocorrer um erro, ou o identificador de arquivo no final do arquivo, ele retorna undef.
função de leitura
função de leitura é usado para tratar a informação lida a partir do buffer de arquivo.
Esta função é usada para ler dados binários de um arquivo.
read FILEHANDLE, SCALAR, LENGTH, OFFSET read FILEHANDLE, SCALAR, LENGTH
Parâmetro Descrição:
- FILEHANDLE: identificadores de arquivo, usados para armazenar um identificador exclusivo para o arquivo.
- ESCALAR: Posição inicial de leitura.
- COMPRIMENTO: comprimento de conteúdo ler.
- OFFSET: offset.
Se bem-sucedido retornar para ler o número de bytes lidos, retorna 0 se o fim do arquivo, se ocorrer um erro voltar undef.
função de impressão
Para toda a informação é lida a partir das funções de manuseio de arquivo na extremidade traseira da função principal é escrever impressão:
print FILEHANDLE LIST print LIST print
Use arquivo e funções de impressão pode lidar com os resultados da execução para os aparelhos de saída (stdout: saída padrão), por exemplo:
print "Hello World!\n";
cópia de arquivo
O exemplo a seguir vamos abrir uma file1.txt arquivo existente, e lê-lo cada linha escrita ao file2.txt arquivo em:
#!/usr/bin/perl # 只读方式打开文件 open(DATA1, "<file1.txt"); # 打开新文件并写入 open(DATA2, ">file2.txt"); # 拷贝数据 while(<DATA1>) { print DATA2 $_; } close( DATA1 ); close( DATA2 );
Renomeie o arquivo
Os exemplos a seguir, já vai existente arquivo file1.txt renomear file2.txt, diretório especificado no / usr / w3big / test / em:
#!/usr/bin/perl rename ("/usr/w3big/test/file1.txt", "/usr/w3big/test/file2.txt" );
Funçãorenomeia só aceita dois parâmetros, somente o arquivo já existe será renomeado.
excluir arquivos
Os exemplos a seguir demonstram como usamos a funçãounlink para excluir este arquivo:
#!/usr/bin/perl unlink ("/usr/w3big/test/file1.txt");
Especifique o local do arquivo
Você pode usar a funçãotell para obter a localização do arquivo e especificar o local dentro do arquivo usando a função de procura:
função de dizer
função de dizer é usado para obter o local do arquivo:
tell FILEHANDLE tell
Se FILEHANDLE a função retorna a posição do ponteiro do arquivo, em bytes. Se você não especificar um retorno para o identificador de arquivo padrão selecionado.
função de busca
seek () função é usada para percorrer o arquivo identificador de arquivo ler e escrever ponteiros a maneira de ler ou escrever um arquivo, em bytes ler e escrever:
seek FILEHANDLE, POSITION, WHENCE
Parâmetro Descrição:
- FILEHANDLE: identificadores de arquivo, usados para armazenar um identificador exclusivo para o arquivo.
- POSIÇÃO: indica o número de bytes de identificador de arquivo (read-write ponteiro posição) para mover.
- WHENCE: representa um identificador de arquivo (leitura e escrita localização ponteiros) começar quando a posição inicial, você pode ter um valor de 0, 1; denotar o início do arquivo, a posição atual e o fim do arquivo.
Os exemplos seguintes são para ler 256 bytes a partir do início do ficheiro:
seek DATA, 256, 0;
informações sobre o arquivo
operações de arquivo Perl também pode testar se um arquivo existe e está a ler e escrever.
O que posso criar o arquivo file1.txt, como no seguinte:
$ 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"; }
O programa acima, a saída é:
file1.txt 信息:是一个文本文件, 15 字节
Arquivo operadores de teste na tabela a seguir:
operadores | descrição |
---|---|
-A | vez que o arquivo é acessado pela primeira vez (unidades: dias) |
-B | Quer se trate de um arquivo binário |
-C | ARQUIVO (inode) inode tempo de modificação (unidades: dias) |
-M | O arquivo estavam última vez modificado (unidades: dias) |
-O | Todos os arquivos são reais UID |
-R | Arquivo ou diretório pode ser lido pelo UID do real / GID |
-S | O socket (soquete) |
-T | Quer se trate de um arquivo de texto |
-W | Arquivo ou diretório pode ser escrito para o UID do real / GID |
-X | Arquivos ou diretórios pode ser executado UID reais / GID |
-b | Um arquivo de bloco especial (bloco especial) (como disco de montagem) |
-c | O personagem-especial (caracteres especiais) arquivo (como dispositivos de I / O) |
-d | anuário |
-e | Nome do arquivo ou diretório existe |
-f | arquivo comum |
-g | Arquivo ou pasta tem o atributo setgid |
-k | Arquivo ou diretório tem o bit sticky |
-l | É uma ligação simbólica |
-o | Todos os arquivos estão UID válido |
-p | Arquivo é um pipe nomeado (FIFO) |
-r | Os arquivos podem ser eficazmente UID / GID ler |
-s | Arquivo ou diretório existe e não é 0 (retorna o número de bytes) |
-t | identificador de arquivo é TTY (função isatty system () retorna o resultado; o nome do arquivo não pode usar este teste) |
-u | Arquivo ou pasta tem o atributo setuid |
-w | Os arquivos podem ser gravados em um UID válido / GID |
-x | Os arquivos podem ser executados de forma eficaz UID / GID |
-z | File existe, o tamanho de 0 (directório constante é falsa), isto é, se o ficheiro está vazio, |