Perl | Writing to a File
Last Updated :
07 Mar, 2019
Improve
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:
Perl
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.
Perl
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.
Perl
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 :
Perl
When File exists:
When File doesn't exists:
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 stringHere, 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";





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


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

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

