summaryrefslogtreecommitdiff
path: root/pod/perlfaq5.pod
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2002-03-22 15:03:05 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2002-03-22 15:03:05 +0000
commitf5ba0729635763db7d8a7bd85f72e665776cb748 (patch)
treec9ad1496631d17c93ef9b5ddc3c6360ba5dba976 /pod/perlfaq5.pod
parent8f8f6e09d34f5d0588c3287bc99d33cf16f7fc13 (diff)
downloadperl-f5ba0729635763db7d8a7bd85f72e665776cb748.tar.gz
Undo #15415, allow the faq people to catch up first.
p4raw-id: //depot/perl@15416
Diffstat (limited to 'pod/perlfaq5.pod')
-rw-r--r--pod/perlfaq5.pod26
1 files changed, 16 insertions, 10 deletions
diff --git a/pod/perlfaq5.pod b/pod/perlfaq5.pod
index e7bcee2a22..701a757558 100644
--- a/pod/perlfaq5.pod
+++ b/pod/perlfaq5.pod
@@ -1,6 +1,6 @@
=head1 NAME
-perlfaq5 - Files and Formats ($Revision: 1.13 $, $Date: 2002/03/16 15:37:26 $)
+perlfaq5 - Files and Formats ($Revision: 1.12 $, $Date: 2002/03/11 22:25:25 $)
=head1 DESCRIPTION
@@ -496,7 +496,6 @@ literals
open FILE, "<", " file "; # filename is " file "
open FILE, ">", ">file"; # filename is ">file"
-
It may be a lot clearer to use sysopen(), though:
@@ -764,7 +763,21 @@ more fun to use the standard DB_File module's $DB_RECNO bindings,
which allow you to tie an array to a file so that accessing an element
the array actually accesses the corresponding line in the file.
-You can read the entire filehandle contents into a scalar.
+On very rare occasion, you may have an algorithm that demands that
+the entire file be in memory at once as one scalar. The simplest solution
+to that is
+
+ $var = `cat $file`;
+
+Being in scalar context, you get the whole thing. In list context,
+you'd get a list of all the lines:
+
+ @lines = `cat $file`;
+
+This tiny but expedient solution is neat, clean, and portable to
+all systems on which decent tools have been installed. For those
+who prefer not to use the toolbox, you can of course read the file
+manually, although this makes for more complicated code.
{
local(*INPUT, $/);
@@ -777,13 +790,6 @@ close the file at block exit. If the file is already open, just use this:
$var = do { local $/; <INPUT> };
-For ordinary files you can also use the read function.
-
- read( INPUT, $var, -s INPUT );
-
-The third argument tests the byte size of the data on the INPUT filehandle
-and reads that many bytes into the buffer $var.
-
=head2 How can I read in a file by paragraphs?
Use the C<$/> variable (see L<perlvar> for details). You can either