perl | Introducción al manejo de archivos

En Perl , un FileHandle asocia un nombre a un archivo externo, que se puede usar hasta el final del programa o hasta que se cierre FileHandle. En resumen, un FileHandle es como una conexión que se puede usar para modificar el contenido de un archivo externo y se le da un nombre a la conexión (FileHandle) para un acceso más rápido y fácil.

Los tres FileHandles básicos en Perl son STDIN, STDOUT y STDERR, que representan dispositivos de entrada estándar, salida estándar y error estándar, respectivamente.

El manejo de archivos generalmente se realiza a través de la función abierta.

Sintaxis: open(FileHandle, Mode, FileName);

Parámetros:

  • FileHandle- La referencia al archivo, que se puede usar dentro del programa o hasta su cierre.
  • Modo- ​​Modo en el que se va a abrir un archivo.
  • FileName: el nombre del archivo que se va a abrir.

Además, Mode y FileName se pueden combinar para formar una sola expresión para abrir.

Sintaxis: open(FileHandle, Expression);
Parámetros:

  • FileHandle- La referencia al archivo, que se puede usar dentro del programa o hasta su cierre.
  • ExpressionMode y FileName se juntaron.

FileHandle se cierra mediante la función de cierre.

Sintaxis: close(FileHandle);
Parámetros:

  • FileHandle: el FileHandle que se cerrará.
Leer y escribir en un archivo usando FileHandle

 
La lectura de un FileHandle se puede hacer a través de la función de impresión.

Sintaxis: print(<FileHandle>);
Parámetros:

  • FileHandle- FileHandle abierto en modo de lectura o un modo similar.

También se puede escribir en un archivo a través de la función de impresión.

Sintaxis: print FileHandle
Parámetros de string:

  • FileHandle- FileHandle abierto en modo de escritura o un modo similar.
  • String: la string que se insertará en el archivo.
Diferentes modos en el manejo de archivos
Modo Explicación
“<“ Modo de solo lectura
“>” Crea un archivo (si es necesario), borra el contenido del archivo y lo escribe
“>>” Crea un archivo (si es necesario), lo agrega al archivo
“+<“ Lee y escribe pero NO crea
“+>” Crea archivo (si es necesario), borra, lee y escribe
“+>>” Crea archivo (si es necesario), lee y agrega

Ejemplos:
considere un archivo Hello.txt que contenga la string «Bienvenido a GeeksForGeeks!!!» inicialmente.

  1. Modo = «<«
    Este es el modo de solo lectura. Este modo se usa para leer el contenido línea por línea del archivo.

    #!/usr/bin/perl
      
    # Opening a File in Read-only mode
    open(r, "<", "Hello.txt");
      
    # Printing content of the File
    print(<r>);
      
    # Closing the File
    close(r);

    Producción:

  2. Modo = “>”
    Este es el modo de solo escritura. El contenido original del archivo se borra una vez que se abre en este modo. Crea un nuevo Archivo con el mismo nombre, si no se encuentra uno.

    #!/usr/bin/perl
      
    # Opening File Hello.txt in Read mode
    open(r, "<", "Hello.txt"); 
      
    # Printing the existing content of the file
    print("Existing Content of Hello.txt: " . <r>); 
      
    # Opening File in Write mode
    open(w, ">", "Hello.txt"); 
      
    # Set r to the beginning of Hello.txt
    seek r, 0, 0; 
      
    print "\nWriting to File...";
      
    # Writing to Hello.txt using print
    print w "Content of this file is changed";
      
    # Closing the FileHandle
    close(w); 
      
    # Set r to the beginning of Hello.txt
    seek r, 0, 0; 
      
    # Print the current contents of Hello.txt
    print("\nUpdated Content of Hello.txt: ".<r>); 
      
    # Close the FileHandle
    close(r); 

    Producción:

  3. Mode=”>>”
    Este es el Modo Agregar. El contenido original del archivo no se borra cuando se abre en este modo. Este modo no se puede usar para sobrescribir ya que la string siempre se adjunta al final. Crea un nuevo Archivo con el mismo nombre, si no se encuentra uno.

    #!/usr/bin/perl
      
    # Opening File Hello.txt in Read mode
    open(r, "<", "Hello.txt"); 
      
    # Printing the existing content of the file
    print("Existing Content of Hello.txt: " . <r>); 
      
    # Opening the File in Append mode
    open(A, ">>", "Hello.txt"); 
      
    # Set r to the beginning of Hello.txt
    seek r, 0, 0; 
      
    print "\nAppending to File...";
      
    # Appending to Hello.txt using print
    print A " Hello Geeks!!!"
      
    # close the FileHandle
    close(A); 
      
    # Set r to the beginning of Hello.txt
    seek r, 0, 0; 
      
    # Print the current contents of Hello.txt
    print("\nUpdated Content of Hello.txt: ".<r>);
      
    # Close the FileHandle
    close(r); 

    Producción:

  4. Modo = “+<“
    Este es el modo de lectura y escritura. Esto se puede usar para sobrescribir una string existente en el archivo. No puede crear un nuevo archivo.

    #!/usr/bin/perl
      
    # Open Hello.txt in Read-Write Mode
    open(rw, "+<", "Hello.txt"); 
      
    # Print original contents of the File. 
    # rw is set to the end.
    print("Existing Content of Hello.txt: ".<rw>); 
      
    # The string is attached at the end 
    # of the original contents of the file.
    print rw "Added using Read-Write Mode."
      
    # Set rw to the beginning of the File for reading.
    seek rw, 0, 0; 
      
    # Printing the Updated content of the File
    print("\nUpdated contents of Hello.txt: ".<rw>);
      
    # Close the FileHandle
    close(rw); 

    Producción:

  5. Modo = “+>”
    Este es el modo de lectura y escritura. La diferencia entre “+<” y “+>” es que “+>” puede crear un nuevo archivo, si no se encuentra uno con el nombre, pero “+<” no.

    #!/usr/bin/perl
      
    # Opening File Hello.txt in Read mode
    open(r, "<", "Hello.txt"); 
      
    # Printing the existing content of the file
    print("Existing Content of Hello.txt: " . <r>); 
      
    # Closing the File
    close(r);
      
    # Open Hello.txt in Read-Write Mode
    open(rw, "+>", "Hello.txt"); 
      
    # Original contents of the File
    # are cleared when the File is opened
    print("\nContents of Hello.txt gets cleared..."); 
      
    # The string is written to the File
    print rw "Hello!!! This is updated file."
      
    # Set rw to the beginning of the File for reading.
    seek rw, 0, 0; 
      
    print("\nUpdated Content of Hello.txt: " .<rw>);
      
    # Closing the File
    close(rw);

    Producción:

  6. Modo = “+>>”
    Este es el modo de lectura adjunta. Esto se puede usar para leer desde un archivo, así como para agregarlo. Se crea un nuevo archivo con el mismo nombre, si no se encuentra uno.

    # Open Hello.txt in Read-Append Mode
    open(ra, "+>>", "Hello.txt"); 
      
    # Set ra to the beginning of the File for reading.
    seek ra, 0, 0; 
      
    # Original content of the File 
    # is NOT cleared when the File is opened
    print("Existing Content of the File: " . <ra>);
      
    print "\nAppending to the File....";
      
    # The string is appended to the File
    print ra "Added using Read-Append Mode"
      
    # Set ra to the beginning of the File for reading.
    seek ra, 0, 0; 
      
    # Printing the updated content
    print("\nUpdated content of the File: " . <ra>);
      
    # Closing the File
    close(rw);

    Producción:

  7.  

    Salida de redirección

     
    La salida se puede redirigir fuera de la consola y a un archivo mediante la función de selección.

    Sintaxis: select FileHandle;
    Parámetros:

    • FileHandle: FileHandle del archivo que se seleccionará.

    Pasos:

  • Abra un FileHandle para escribir, por ejemplo, «>», «>>», «+<«, «+>» o «+>>».
  • Seleccione FileHandle usando la función de selección.

Ahora, todo lo que se imprime con la función de impresión se redirige al Archivo.

Ejemplo:

# Open a FileHandle in Write Mode.
open(File, ">", "Hello.txt"); 
  
# This sets File as the default FileHandle
select File; 
   
# Writes to File
print("This goes to the File."); 
  
# Writes to File
print File "\nThis goes to the File too."; 
  
# This sets STDOUT as default FileHandle
select STDOUT; 
print("This goes to the console.");
  
# Close the FileHandle.
close(File); 

Salida en la consola:

Contenido de Hello.txt:
Archivo original:

Archivo actualizado:

Publicación traducida automáticamente

Artículo escrito por KoushikMasavarapu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *