This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update perlfaq to CPAN version 5.20200523
authorKaren Etheridge <ether@cpan.org>
Sat, 7 Nov 2020 21:04:53 +0000 (13:04 -0800)
committerKaren Etheridge <ether@cpan.org>
Sat, 7 Nov 2020 21:04:53 +0000 (13:04 -0800)
  [DELTA]

5.20201107  2020-11-07 21:02:39Z
  * typo fix (PR#90, Samanta Navarro)
  * fix learn.perl.org link, which now directs to perldoc.perl.org (PR#91, Dan
    Book)
  * modern updates to "How do I efficiently match many regular expressions"
    (PR#92, Dan Book)

13 files changed:
Porting/Maintainers.pl
cpan/perlfaq/lib/perlfaq.pm
cpan/perlfaq/lib/perlfaq.pod
cpan/perlfaq/lib/perlfaq1.pod
cpan/perlfaq/lib/perlfaq2.pod
cpan/perlfaq/lib/perlfaq3.pod
cpan/perlfaq/lib/perlfaq4.pod
cpan/perlfaq/lib/perlfaq5.pod
cpan/perlfaq/lib/perlfaq6.pod
cpan/perlfaq/lib/perlfaq7.pod
cpan/perlfaq/lib/perlfaq8.pod
cpan/perlfaq/lib/perlfaq9.pod
cpan/perlfaq/lib/perlglossary.pod

index 26e0502..8d9f5c7 100755 (executable)
@@ -899,7 +899,7 @@ use File::Glob qw(:case);
     },
 
     'perlfaq' => {
-        'DISTRIBUTION' => 'ETHER/perlfaq-5.20200523.tar.gz',
+        'DISTRIBUTION' => 'ETHER/perlfaq-5.20201107.tar.gz',
         'FILES'        => q[cpan/perlfaq],
         'EXCLUDED'     => [ qr/^inc/, qr/^xt/, qr{^t/00-} ],
     },
index c8016cf..3dd5421 100644 (file)
@@ -2,6 +2,6 @@ use strict;
 use warnings;
 package perlfaq;
 
-our $VERSION = '5.20200523';
+our $VERSION = '5.20201107';
 
 1;
index 3b7345a..de114be 100644 (file)
@@ -4,7 +4,7 @@ perlfaq - Frequently asked questions about Perl
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
@@ -15,7 +15,7 @@ into nine major sections outlined in this document.
 =head2 Where to find the perlfaq
 
 The perlfaq is an evolving document.  Read the latest version at
-L<http://learn.perl.org/faq/>.  It is also included in the standard Perl
+L<https://perldoc.perl.org/perlfaq>.  It is also included in the standard Perl
 distribution.
 
 =head2 How to use the perlfaq
@@ -35,9 +35,8 @@ Review L<https://github.com/perl-doc-cats/perlfaq/wiki>.  If you don't find
 your suggestion create an issue or pull request against
 L<https://github.com/perl-doc-cats/perlfaq>.
 
-Once approved, changes are merged into L<https://github.com/tpf/perlfaq>, the
-repository which drives L<http://learn.perl.org/faq/>, and they are
-distributed with the next Perl 5 release.
+Once approved, changes will be distributed with the next Perl release and
+subsequently appear at L<https://perldoc.perl.org/perlfaq>.
 
 =head2 What if my question isn't answered in the FAQ?
 
index 0ec9f16..e8ecaff 100644 (file)
@@ -4,7 +4,7 @@ perlfaq1 - General Questions About Perl
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 447ad08..614aac9 100644 (file)
@@ -4,7 +4,7 @@ perlfaq2 - Obtaining and Learning about Perl
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
@@ -230,7 +230,7 @@ wanted to report a bug in L<Business::ISBN>, you could send a message to
 bug-Business-ISBN@rt.cpan.org .
 
 Some modules might have special reporting requirements, such as a
-Github or Google Code tracking system, so you should check the
+GitHub or Google Code tracking system, so you should check the
 module documentation too.
 
 =head1 AUTHOR AND COPYRIGHT
index 481c3c9..017ab38 100644 (file)
@@ -4,7 +4,7 @@ perlfaq3 - Programming Tools
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 1a20aba..3645a14 100644 (file)
@@ -4,7 +4,7 @@ perlfaq4 - Data Manipulation
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index a7fc0ea..81a44d8 100644 (file)
@@ -4,7 +4,7 @@ perlfaq5 - Files and Formats
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 9a45f0e..6b33321 100644 (file)
@@ -4,7 +4,7 @@ perlfaq6 - Regular Expressions
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
@@ -692,47 +692,34 @@ X<regular expression, efficiency>
 
 (contributed by brian d foy)
 
-If you have Perl 5.10 or later, this is almost trivial. You just smart
-match against an array of regular expression objects:
-
-    my @patterns = ( qr/Fr.d/, qr/B.rn.y/, qr/W.lm./ );
-
-    if( $string ~~ @patterns ) {
-        ...
-    };
-
-The smart match stops when it finds a match, so it doesn't have to try
-every expression.
-
-Earlier than Perl 5.10, you have a bit of work to do. You want to
+You want to
 avoid compiling a regular expression every time you want to match it.
 In this example, perl must recompile the regular expression for every
-iteration of the C<foreach> loop since it has no way to know what
-C<$pattern> will be:
+iteration of the C<foreach> loop since C<$pattern> can change:
 
-    my @patterns = qw( foo bar baz );
+    my @patterns = qw( fo+ ba[rz] );
 
-    LINE: while( <DATA> ) {
-        foreach $pattern ( @patterns ) {
-            if( /\b$pattern\b/i ) {
-                print;
+    LINE: while( my $line = <> ) {
+        foreach my $pattern ( @patterns ) {
+            if( $line =~ m/\b$pattern\b/i ) {
+                print $line;
                 next LINE;
             }
         }
     }
 
-The C<qr//> operator showed up in perl 5.005. It compiles a regular
+The C<qr//> operator compiles a regular
 expression, but doesn't apply it. When you use the pre-compiled
 version of the regex, perl does less work. In this example, I inserted
 a C<map> to turn each pattern into its pre-compiled form. The rest of
 the script is the same, but faster:
 
-    my @patterns = map { qr/\b$_\b/i } qw( foo bar baz );
+    my @patterns = map { qr/\b$_\b/i } qw( fo+ ba[rz] );
 
-    LINE: while( <> ) {
-        foreach $pattern ( @patterns ) {
-            if( /$pattern/ ) {
-                print;
+    LINE: while( my $line = <> ) {
+        foreach my $pattern ( @patterns ) {
+            if( $line =~ m/$pattern/ ) {
+                print $line;
                 next LINE;
             }
         }
@@ -740,14 +727,18 @@ the script is the same, but faster:
 
 In some cases, you may be able to make several patterns into a single
 regular expression. Beware of situations that require backtracking
-though.
+though. In this example, the regex is only compiled once because
+C<$regex> doesn't change between iterations:
 
-    my $regex = join '|', qw( foo bar baz );
+    my $regex = join '|', qw( fo+ ba[rz] );
 
-    LINE: while( <> ) {
-        print if /\b(?:$regex)\b/i;
+    while( my $line = <> ) {
+        print if $line =~ m/\b(?:$regex)\b/i;
     }
 
+The function L<Data::Munge/list2re> on CPAN can also be used to form
+a single regex that matches a list of literal strings (not regexes).
+
 For more details on regular expression efficiency, see I<Mastering
 Regular Expressions> by Jeffrey Friedl. He explains how the regular
 expressions engine works and why some patterns are surprisingly
index a69e053..0ad703e 100644 (file)
@@ -4,7 +4,7 @@ perlfaq7 - General Perl Language Issues
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 8ee088a..d192350 100644 (file)
@@ -4,7 +4,7 @@ perlfaq8 - System Interaction
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 15ca2d0..0e23935 100644 (file)
@@ -4,7 +4,7 @@ perlfaq9 - Web, Email and Networking
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
index 2e7eeda..d2b54c6 100644 (file)
@@ -7,7 +7,7 @@ perlglossary - Perl Glossary
 
 =head1 VERSION
 
-version 5.20200523
+version 5.20201107
 
 =head1 DESCRIPTION
 
@@ -2642,7 +2642,7 @@ C<tr///>.
 Formerly, a reference X<pseudohashes>X<hashes, pseudohashes>to an array
 whose initial element happens to hold a reference to a hash. You used to be
 able to treat a pseudohash reference as either an array reference or a hash
-reference. Pseduohashes are no longer supported.
+reference. Pseudohashes are no longer supported.
 
 =item pseudoliteral