Perl File Handling: open, read, write and close files
#====================
Opening files
Solution 1:
Opening a file in perl
open FILE, "filename.txt" or die $!; # read
open FILEHANDLE, MODE, EXPR
The available modes are the following:
mode | operand | create | truncate |
---|---|---|---|
read | < | ||
write | > | ✓ | ✓ |
append | >> | ✓ |
Each of the above modes can also be prefixed with the + character to allow for simultaneous reading and writing.
mode | operand | create | truncate |
---|---|---|---|
read/write | +< | ||
read/write | +> | ✓ | ✓ |
read/append | +>> | ✓ |
open FILE, ">", "filename.txt" or die $!
#write
open FILE, ">filename.txt" or die $!;
#write
Solution 2:
#!/usr/bin/perl open(FILE
, "<file.txt") or die "Couldn't open file file.txt, $!"; while(<FILE
>){
print "$_";
}
Following is the table which gives possible values of different modes
Entities | Definition |
---|---|
< or r | Read Only Access |
> or w | Creates, Writes, and Truncates |
>> or a | Writes, Appends, and Creates |
+< or r+ | Reads and Writes |
+> or w+ | Reads, Writes, Creates, and Truncates |
+>> or a+ | Reads, Writes, Appends, and Creates |
Solution 3:
sysopen(FILE, "file.txt", O_RDWR|O_TRUNC );
Following is the table which gives possible values of MODE
Entities | Definition |
---|---|
O_RDWR | Read and Write |
O_RDONLY | Read Only |
O_WRONLY | Write Only |
O_CREAT | Create the file |
O_APPEND | Append the file |
O_TRUNC | Truncate the file |
O_EXCL | Stops if file already exists |
O_NONBLOCK | Non-Blocking usability |
#====================
Reading files
read a text file line-by-line
my @lines = <FILE>;
while (<FILE>) { print $_; }
while (my $line = <FILE>) { ...
}
read a file only a few characters at a time
open FILE, "picture.jpg" or die $!;
# read
binmode FILE;
my ($buf, $data, $n);
while (($n = read FILE, $data, 4) != 0)
{ print "$n bytes read\n"; $buf .= $data; }
close(FILE);
#====================
Writing files
open FILE, ">file.txt" or die $!; #write
print FILE $str;
close FILE;
#====================
Closing files
open FILE1, "file.txt" or die $!;
# read
open FILE2, "picture.jpg" or die $!;
# read
...
close FILE2;
close FILE1;
#====================
REF:
http://www.perlfect.com/articles/perlfile.shtml