In Perl, a FileHandle maps a name to an external file, which can then be used to perform a number of actions on the file such as reading, writing, and altering data on the file. A FileHandle can be used until the end of a program or until the file is closed.
All FileHandles are equipped with read/write access to the files. However, the user can determine the mode in which the FileHandle is opened. There are three standard types of FileHandles:
There are two functions that can be used to open a file, open()
and sysopen()
. Both functions perform the same tasks; however, the open()
function is a high-level wrapper around the open
system call, while the sysopen()
is a relatively thin wrapper around it. sysopen()
provides more precise control over file redirection and piping, but for most use cases, the open()
function is more than enough.
open(FileHandle, Mode, "filename");
FileHandle
: FileHandle is used to refer to the file and perform actions read/write, or update operations on it until program execution stops or the FileHandle is closed.Mode
: The mode in which the file should be opened, e.g., read-only, read-write, etc.filename
: The name of the file passed as a string.Note: The
filename
and themode
can be concatenated into a single string to form an expression likeopen(FileHandle, "+<FileName.txt")
, where the+<
denotes read and write mode.
open()
returns non-zero upon success, and returns undef
upon failure.
The general way to write into any file stream is through the print()
function. By default, print()
will write to STDOUT
. However, an optional parameter can be passed to specify the file stream where data is to be written.
print FILEHANDLE LIST
print FILEHANDLE
print LIST
print
FileHandle
: The Filehandle
specifying the file stream where data will be written.List
: The list of data to be written.print
returns True
if successful.
Mode | Description |
< | Read Only |
> | Create, Write or Truncate |
>> | Writes, Appends and Creates |
+< | Read and Write |
+> | Reads, Writes, Creates, and Truncates |
+>> | Reads, Writes, Appends, and Creates |
The close()
function closes the file descriptor or FileHandle, flushes the I/O buffers and closes any related pipes.
close(FileHandle)
FileHandle
: The FileHandle to close.close()
returns True
if all the operations are executed successfully.
The <>
operator is the primary method of reading the contents of a file from a FileHandle.
It returns the whole contents of the file is used in a scalar context.
If used in the array context, it returns each line of the file as an element in the array.
open($In, "+<" ,"test.txt");while ($line = <$In>){print $line;}close $In;
In the above code, we use the <FileHandle>
operator in the singular context, reading one line at a time and printing it to STDOUT
.
Let’s see an example of <FileHandle>
working in the array context:
open($In, "+<" ,"test.txt");@array = <$In>;print @array;
The following code snippet gives an example of how to read and write to a file.
The first step is to open the file using the open()
function in read/write mode. Then, we read the contents of the file and display them on STDOUT
. Next, we update the contents of the file and display the updated contents on the standard output.
open(In, "+<", "test.txt");print(<In>);close(In);print "\nAppending ...\n";# Appending a string to the file and displaying it.open(Appnd, ">>", "test.txt");print Appnd "\nThis is the appended string\n";close Appnd;# opening in read modeopen(Rd, "<", "test.txt");print <Rd>;close Rd;
sysopen()
works similarly to the previously mentioned open()
function, but it uses the open
system call instead.
sysopen()
is equivalent to the C system call for open()
, as Perl is written in C.
The PERMS
argument denotes the file permissions given to the sysopen()
call. If it is not specified, then the default value 0666
is used.
sysopen FILEHANDLE,FILENAME,MODE
sysopen FILEHANDLE,FILENAME,MODE,PERMS
FileHandle
: The name of the FileHandle used to refer to the file.FileName
: The name of the file.Mode
: The mode in which the file should open, e.g., read-only, read-write, etc.PERMS
: Specifies the permissions of the file. The default value is 0666
.Free Resources