Um filehandle é uma variável usada para ler e gravar em um arquivo. Este filehandle fica associado ao arquivo.

Para gravar no arquivo, ele é aberto no modo de gravação conforme mostrado abaixo:

open (FH, ‘>’, “filename.txt”);

Se o arquivo já existir, ele trunca o conteúdo antigo do arquivo com o novo. Caso contrário, um novo arquivo será criado e o conteúdo será adicionado.

função print()

A função print() é usada para gravar conteúdo em um arquivo.

Sintaxe: print filehandle string



Aqui, filehandle é associado ao arquivo no momento da abertura do arquivo e a string contém o conteúdo a ser gravado no arquivo.

Exemplo :

# Opening file Hello.txt in write mode
open (fh, ">", "Hello.txt");
  
# Getting the string to be written
# to the file from the user
print "Enter the content to be added\n";
$a = <>;
  
# Writing to the file
print fh $a;
  
# Closing the file
close(fh) or "Couldn't close the file"; 

Antes de gravar no arquivo:

Executando o código para escrever:

Arquivo atualizado:

Veja como o programa funciona:
Etapa 1: Abrindo o arquivo Hello.txt no modo de gravação.
Etapa 2: Obtendo o texto do teclado de entrada padrão.
Etapa 3: Gravando a string armazenada em '$a' no arquivo apontado por filehandle 'fh'
Etapa 4: Fechando o arquivo.
 
Copiar conteúdo de um arquivo para outro:

Antes da execução do código:
Arquivo fonte:

Arquivo de destino:

Exemplo: o
exemplo abaixo lê o conteúdo do arquivo de origem e grava no arquivo de destino.

# Source File 
$src = 'Source.txt';
  
# Destination File
$des = 'Destination.txt';
  
# open source file for reading
open(FHR, '<', $src);
   
# open destination file for writing
open(FHW, '>', $des); 
   
print("Copying content from $src to $des\n");
while(<FHR>)
{
   print FHW $_; 
}
   
# Closing the filehandles
close(FHR);
close(FHW);
   
print "File content copied successfully!\n";

Código de execução:

Arquivo de destino atualizado:

Veja como o programa funciona: -
Etapa 1: Abrindo 2 arquivos Source.txt no modo de leitura e Destination.txt no modo de gravação.
Etapa 2: Lendo o conteúdo do FHR que é filehandle para ler o conteúdo, enquanto FHW é um filehandle para gravar o conteúdo no arquivo.
Etapa 3: Copiar o conteúdo com o uso da função de impressão.
Etapa 4: feche o conn quando terminar de ler o arquivo.
 

Tratamento de erros e relatório de erros

Existem duas maneiras pelas quais os erros podem ser tratados

  • Lançar uma exceção se o arquivo não puder ser aberto (Tratamento de um erro)
  • Dê um aviso se o arquivo não puder ser aberto e continue executando (relatório de erros)

Lance uma exceção (usando a função Die)
Quando o filehandle não pode ser atribuído a um ponteiro de arquivo válido naquele momento, o dado é executado imprimindo a mensagem e mata o programa atual.
Exemplo :

# Initializing filename  
$filename = 'Hello.txt'; 
# $filename = 'ello.txt';
  
# Prints an error and exits 
# if file not found 
open(fh, '<', $filename) or 
     die "Couldn't Open file $filename"; 

No código acima, quando o arquivo existe, ele simplesmente é executado sem erros, mas se o arquivo não existir, ele gera um erro e o código é encerrado.

Dê um aviso (usando a função warn)
Quando o filehandle não pode ser atribuído a um ponteiro de arquivo válido, ele apenas imprime uma mensagem de aviso usando a função warn e continua em execução.
Exemplo :

# Initializing filename 
$filename = 'GFG.txt'; 
  
# Opening a file and reading content 
if(open(fh, '<', $filename)) 
{ 
    while(<fh>) 
    { 
        print $_; 
    } 
} 
  
# Executes if file not found 
else
{ 
  warn "Couldn't Open a file $filename"; 
} 

Quando o arquivo existe:

Quando o arquivo não existe: