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:
modeoperandcreatetruncate
read
<
write
>
✓
✓
append
>>
✓
Each of the above modes can also be prefixed with the + character to allow for simultaneous reading and writing.
modeoperandcreatetruncate
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
EntitiesDefinition
< 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
EntitiesDefinition
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