Latest web development tutorials

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,