Using Filehandles
After a filehandle is open for reading, you can read lines from it
just as you can read from standard input with
STDIN. So, for example, to
read lines from a text file:
open (FIL,"some_file");
while (<FIL>) {
chomp;
print "I saw $_ in some_file!\n";
}Note that the newly opened filehandle is used inside the angle
brackets, just as we have used STDIN previously.
If you have a filehandle open for writing or appending, and if you want to print to it, you must place the filehandle immediately after the print keyword and before the other arguments. No comma should occur between the filehandle and the rest of the arguments:
print LOGFILE "Finished item $n of $max\n"; print STDOUT "hi, world!\n";
In this case, the message beginning with Finished
goes to the LOGFILE filehandle, which presumably
was opened earlier in the program. And hi,
world still goes to standard output, just as when
you didn’t specify the filehandle. We say that
STDOUT is the
default
filehandle for the print statement.
Here’s a way to copy all of the text from a file specified in
$a into a file specified in $b.
It illustrates nearly everything we’ve learned in the last few
pages:[69]
open(IN,$a) || die "cannot open $a for reading: $!";
open(OUT,">$b") || die "cannot create $b: $!";
while (<IN>) { # read a line from file $a into $_
print OUT $_; # print that line to file $b
}
close(IN) || die "can't close $a:$!";
close(OUT) || die "can't close $b:$!";[69] Although this method is entirely redundant when ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access