From: Jarkko Hietaniemi Date: Fri, 17 May 2002 12:18:54 +0000 (+0000) Subject: FAQ sync. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=76817d6d0100fce867ccaef52d4367ca8ccd3fa2;p=p5sagit%2Fp5-mst-13.2.git FAQ sync. p4raw-id: //depot/perl@16653 --- diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 27908d5..aeb7c14 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq4 - Data Manipulation ($Revision: 1.21 $, $Date: 2002/05/06 13:08:46 $) +perlfaq4 - Data Manipulation ($Revision: 1.22 $, $Date: 2002/05/16 12:44:24 $) =head1 DESCRIPTION @@ -1396,13 +1396,20 @@ Here's another; let's compute spherical volumes: $_ *= (4/3) * 3.14159; # this will be constant folded } -If you want to do the same thing to modify the values of the hash, -you may not use the C function, oddly enough. You need a slice: +If you want to do the same thing to modify the values of the +hash, you can use the C function. As of Perl 5.6 +the values are not copied, so if you modify $orbit (in this +case), you modify the value. - for $orbit ( @orbits{keys %orbits} ) { + for $orbit ( values %orbits ) { ($orbit **= 3) *= (4/3) * 3.14159; } - + +Prior to perl 5.6 C returned copies of the values, +so older perl code often contains constructions such as +C<@orbits{keys %orbits}> instead of C where +the hash is to be modified. + =head2 How do I select a random element from an array? Use the rand() function (see L): @@ -1540,6 +1547,13 @@ get those bits into your @ints array: This method gets faster the more sparse the bit vector is. (Courtesy of Tim Bunce and Winfried Koenig.) +You can make the while loop a lot shorter with this suggestion +from Benjamin Goldberg: + + while($vec =~ /[^\0]+/g ) { + push @ints, grep vec($vec, $_, 1), $-[0] * 8 .. $+[0] * 8; + } + Or use the CPAN module Bit::Vector: $vector = Bit::Vector->new($num_of_bits); diff --git a/pod/perlfaq8.pod b/pod/perlfaq8.pod index 2a99a6b..feb10f3 100644 --- a/pod/perlfaq8.pod +++ b/pod/perlfaq8.pod @@ -1,6 +1,6 @@ =head1 NAME -perlfaq8 - System Interaction ($Revision: 1.7 $, $Date: 2002/04/18 14:23:15 $) +perlfaq8 - System Interaction ($Revision: 1.8 $, $Date: 2002/05/16 12:41:42 $) =head1 DESCRIPTION @@ -968,9 +968,17 @@ sysopen(): =head2 How do I install a module from CPAN? The easiest way is to have a module also named CPAN do it for you. -This module comes with perl version 5.004 and later. To manually install -the CPAN module, or any well-behaved CPAN module for that matter, follow -these steps: +This module comes with perl version 5.004 and later. + + $ perl -MCPAN -e shell + + cpan shell -- CPAN exploration and modules installation (v1.59_54) + ReadLine support enabled + + cpan> install Some::Module + +To manually install the CPAN module, or any well-behaved CPAN module +for that matter, follow these steps: =over 4