Open In App

Perl | Writing to a File

Improve
Improve
Like Article
Like
Save
Share
Report

A filehandle is a variable that is used to read and write to a file. This filehandle gets associated with the file.

In order to write to the file, it is opened in write mode as shown below:

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

If the file is existing then it truncates the old content of file with the new content. Otherwise a new file will be created and content will be added.

print() function

print() function is used to write content to a file.

Syntax: print filehandle string

Here, filehandle is associated to the file at the time of opening the file and string holds the content to be written to the file.

Example :




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


Before Writing to File:

Executing Code to Write:

Updated File:

Here is how the program works:
Step 1: Opening file Hello.txt in write mode.
Step 2: Getting the text from the standard input keyboard.
Step 3: Writing the string stored in ‘$a’ to the file pointed by filehandle ‘fh’
Step 4: Closing the file.
 
Copying Content from one file to another:

Before Code Execution:
Source File:

Destination File:

Example :
Example below reads the content from the source file and writes it to destination file.




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


Executing Code:

Updated Destination File:

Here is how the program works:-
Step 1: Opening 2 files Source.txt in read mode and Destination.txt in write mode.
Step 2: Reading the content from the FHR which is filehandle to read content while FHW is a filehandle to write content to file.
Step 3: Copying the content with the use of print function.
Step 4: Close the conn once reading file is done.
 

Error Handling and Error Reporting

There are two ways in which Errors can be handled

  • Throw an exception if file cannot be opened (Handling an error)
  • Give a warning if file cannot be opened and continue running (Error reporting)

Throw an Exception (Using Die Function)
When filehandle could not be assigned a valid file pointer at that time die gets executed printing the message and kills the current program.
Example :




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


In the above code when File exists it simply gets executed with no errors but if file doesn’t exists then it generates an error and code terminates.

Give a warning (Using warn function)
When filehandle could not be assigned a valid file pointer it just prints warning message using warn function and keeps running.
Example :




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


When File exists:

When File doesn’t exists:



Last Updated : 07 Mar, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads