diff options
-rw-r--r-- | pod/perlfaq5.pod | 26 | ||||
-rw-r--r-- | pod/perlfaq6.pod | 2 |
2 files changed, 17 insertions, 11 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 diff --git a/pod/perlfaq6.pod b/pod/perlfaq6.pod index c4512e695a..dd76588ec0 100644 --- a/pod/perlfaq6.pod +++ b/pod/perlfaq6.pod @@ -9,7 +9,7 @@ littered with answers involving regular expressions. For example, decoding a URL and checking whether something is a number are handled with regular expressions, but those answers are found elsewhere in this document (in L<perlfaq9>: ``How do I decode or create those %-encodings -on the web'' and L<perfaq4>: ``How do I determine whether a scalar is +on the web'' and L<perlfaq4>: ``How do I determine whether a scalar is a number/whole/integer/float'', to be precise). =head2 How can I hope to use regular expressions without creating illegible and unmaintainable code? |