Change 21835 by [EMAIL PROTECTED] on 2003/12/02 22:18:05

        FAQ sync.

Affected files ...

... //depot/perl/pod/perlfaq1.pod#48 edit
... //depot/perl/pod/perlfaq2.pod#66 edit
... //depot/perl/pod/perlfaq3.pod#78 edit
... //depot/perl/pod/perlfaq4.pod#91 edit
... //depot/perl/pod/perlfaq5.pod#55 edit

Differences ...

==== //depot/perl/pod/perlfaq1.pod#48 (text) ====
Index: perl/pod/perlfaq1.pod
--- perl/pod/perlfaq1.pod#47~21456~     Wed Oct 15 12:19:05 2003
+++ perl/pod/perlfaq1.pod       Tue Dec  2 14:18:05 2003
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq1 - General Questions About Perl ($Revision: 1.12 $, $Date: 2003/07/09 
15:47:28 $)
+perlfaq1 - General Questions About Perl ($Revision: 1.14 $, $Date: 2003/11/23 
08:02:29 $)
 
 =head1 DESCRIPTION
 
@@ -60,7 +60,7 @@
 no longer maintained; its last patch (4.036) was in 1992, long ago and
 far away.  Sure, it's stable, but so is anything that's dead; in fact,
 perl4 had been called a dead, flea-bitten camel carcass.  The most
-recent production release is 5.8.1 (although 5.005_03 and 5.6.1 are
+recent production release is 5.8.2 (although 5.005_03 and 5.6.2 are
 still supported). The most cutting-edge development release is 5.9.
 Further references to the Perl language in this document refer to the
 production release unless otherwise specified.  There may be one or
@@ -102,6 +102,8 @@
 differences between perl5 and ponie.  Ponie is not a complete rewrite
 of perl5.
 
+For more details, see http://www.poniecode.org/
+
 =head2 What is perl6?
 
 At The Second O'Reilly Open Source Software Convention, Larry Wall
@@ -307,9 +309,11 @@
 (Well, OK, maybe it's not quite that distinct, but you get the idea.)
 If you want support and a reasonable guarantee that what you're
 developing will continue to work in the future, then you have to run
-the supported version.  As of October 2003 that means running either
-5.8.1 (released in September 2003), or one of the older releases like
-5.6.1 (released in April 2001) or 5.005_03 (released in March 1999),
+the supported version.  As of December 2003 that means running either
+5.8.2 (released in November 2003), or one of the older releases like
+5.6.2 (also released in November 2003; a maintenance release to let perl
+5.6 compile on newer systems as 5.6.1 was released in April 2001) or
+5.005_03 (released in March 1999),
 although 5.004_05 isn't that bad if you B<absolutely> need such an old
 version (released in April 1999) for stability  reasons.
 Anything older than 5.004_05 shouldn't be used.

==== //depot/perl/pod/perlfaq2.pod#66 (text) ====
Index: perl/pod/perlfaq2.pod
--- perl/pod/perlfaq2.pod#65~21283~     Thu Sep 18 14:29:23 2003
+++ perl/pod/perlfaq2.pod       Tue Dec  2 14:18:05 2003
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.20 $, $Date: 2003/01/26 
17:50:56 $)
+perlfaq2 - Obtaining and Learning about Perl ($Revision: 1.25 $, $Date: 2003/10/16 
04:57:38 $)
 
 =head1 DESCRIPTION
 
@@ -407,10 +407,9 @@
 announcements, contests, and much more.  I<TPJ> has columns on web
 development, databases, Win32 Perl, graphical programming, regular
 expressions, and networking, and sponsors the Obfuscated Perl Contest
-and the Perl Poetry Contests.  As of mid-2001, the dead tree version
-of TPJ will be published as a quarterly supplement of SysAdmin
-magazine ( http://www.sysadminmag.com/ ) For more details on TPJ,
-see http://www.tpj.com/
+and the Perl Poetry Contests.  Beginning in November 2002, TPJ moved to a 
+reader-supported monthly e-zine format in which subscribers can download 
+issues as PDF documents. For more details on TPJ, see http://www.tpj.com/
 
 Beyond this, magazines that frequently carry quality articles on
 Perl are I<The Perl Review> ( http://www.theperlreview.com ),

==== //depot/perl/pod/perlfaq3.pod#78 (text) ====
Index: perl/pod/perlfaq3.pod
--- perl/pod/perlfaq3.pod#77~21391~     Tue Sep 30 05:47:13 2003
+++ perl/pod/perlfaq3.pod       Tue Dec  2 14:18:05 2003
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq3 - Programming Tools ($Revision: 1.35 $, $Date: 2003/08/24 05:26:59 $)
+perlfaq3 - Programming Tools ($Revision: 1.37 $, $Date: 2003/11/24 19:55:50 $)
 
 =head1 DESCRIPTION
 
@@ -65,7 +65,7 @@
 installed distributions, although it can take awhile to do
 its magic.  The standard library which comes with Perl just
 shows up as "Perl" (although you can get those with
-Mod::CoreList).
+Module::CoreList).
 
        use ExtUtils::Installed;
 

==== //depot/perl/pod/perlfaq4.pod#91 (text) ====
Index: perl/pod/perlfaq4.pod
--- perl/pod/perlfaq4.pod#90~21454~     Wed Oct 15 12:06:05 2003
+++ perl/pod/perlfaq4.pod       Tue Dec  2 14:18:05 2003
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq4 - Data Manipulation ($Revision: 1.52 $, $Date: 2003/10/02 04:44:33 $)
+perlfaq4 - Data Manipulation ($Revision: 1.54 $, $Date: 2003/11/30 00:50:08 $)
 
 =head1 DESCRIPTION
 
@@ -362,9 +362,20 @@
 
 =head2 How do I get a random number between X and Y?
 
-Use the following simple function.  It selects a random integer between
-(and possibly including!) the two given integers, e.g.,
-C<random_int_in(50,120)>
+C<rand($x)> returns a number such that
+C<< 0 <= rand($x) < $x >>. Thus what you want to have perl
+figure out is a random number in the range from 0 to the
+difference between your I<X> and I<Y>.
+
+That is, to get a number between 10 and 15, inclusive, you
+want a random number between 0 and 5 that you can then add
+to 10.
+
+    my $number = 10 + int rand( 15-10+1 );
+
+Hence you derive the following simple function to abstract
+that. It selects a random integer between the two given
+integers (inclusive), For example: C<random_int_in(50,120)>.
 
    sub random_int_in ($$) {
      my($min, $max) = @_;
@@ -415,14 +426,6 @@
        return 1+int((((localtime(shift || time))[5] + 1899))/1000);
     }
 
-You can also use the POSIX strftime() function which may be a bit
-slower but is easier to read and maintain.
-
-       use POSIX qw/strftime/;
-
-       my $week_of_the_year = strftime "%W", localtime;
-       my $day_of_the_year  = strftime "%j", localtime;
-
 On some systems, the POSIX module's strftime() function has
 been extended in a non-standard way to use a C<%C> format,
 which they sometimes claim is the "century".  It isn't,
@@ -1489,16 +1492,11 @@
 
 Use the rand() function (see L<perlfunc/rand>):
 
-    # at the top of the program:
-    srand;                     # not needed for 5.004 and later
-
-    # then later on
     $index   = rand @array;
     $element = $array[$index];
 
-Make sure you I<only call srand once per program, if then>.
-If you are calling it more than once (such as before each
-call to rand), you're almost certainly doing something wrong.
+Or, simply:
+    my $element = $array[ rand @array ];
 
 =head2 How do I permute N elements of a list?
 

==== //depot/perl/pod/perlfaq5.pod#55 (text) ====
Index: perl/pod/perlfaq5.pod
--- perl/pod/perlfaq5.pod#54~20611~     Mon Aug 11 01:33:13 2003
+++ perl/pod/perlfaq5.pod       Tue Dec  2 14:18:05 2003
@@ -1,6 +1,6 @@
 =head1 NAME
 
-perlfaq5 - Files and Formats ($Revision: 1.28 $, $Date: 2003/01/26 17:45:46 $)
+perlfaq5 - Files and Formats ($Revision: 1.30 $, $Date: 2003/11/23 08:07:46 $)
 
 =head1 DESCRIPTION
 
@@ -153,8 +153,10 @@
 
 =head2 How can I manipulate fixed-record-length files?
 
-The most efficient way is using pack() and unpack().  This is faster than
-using substr() when taking many, many strings.  It is slower for just a few.
+The most efficient way is using L<pack()|perlfunc/"pack"> and
+L<unpack()|perlfunc/"unpack">.  This is faster than using
+L<substr()|perlfunc/"substr"> when taking many, many strings.  It is
+slower for just a few.
 
 Here is a sample chunk of code to break up and put back together again
 some fixed-format input lines, in this case from the output of a normal,
@@ -162,22 +164,23 @@
 
     # sample input line:
     #   15158 p5  T      0:00 perl /home/tchrist/scripts/now-what
-    $PS_T = 'A6 A4 A7 A5 A*';
-    open(PS, "ps|");
-    print scalar <PS>;
-    while (<PS>) {
-       ($pid, $tt, $stat, $time, $command) = unpack($PS_T, $_);
-       for $var (qw!pid tt stat time command!) {
-           print "$var: <$$var>\n";
+    my $PS_T = 'A6 A4 A7 A5 A*';
+    open my $ps, '-|', 'ps';
+    print scalar <$ps>;
+    my @fields = qw( pid tt stat time command );
+    while (<$ps>) {
+        my %process;
+        @[EMAIL PROTECTED] = unpack($PS_T, $_);
+       for my $field ( @fields ) {
+           print "$field: <$process{$field}>\n";
        }
-       print 'line=', pack($PS_T, $pid, $tt, $stat, $time, $command),
-               "\n";
+       print 'line=', pack($PS_T, @[EMAIL PROTECTED] ), "\n";
     }
 
-We've used C<$$var> in a way that forbidden by C<use strict 'refs'>.
-That is, we've promoted a string to a scalar variable reference using
-symbolic references.  This is okay in small programs, but doesn't scale
-well.   It also only works on global variables, not lexicals.
+We've used a hash slice in order to easily handle the fields of each row.
+Storing the keys in an array means it's easy to operate on them as a
+group or loop over them with for. It also avoids polluting the program
+with global variables and using symbolic references.
 
 =head2 How can I make a filehandle local to a subroutine?  How do I pass filehandles 
between subroutines?  How do I make an array of filehandles?
 
End of Patch.

Reply via email to