This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Reinstate some documentation about quotemeta
authorRafael Garcia-Suarez <rgs@consttype.org>
Mon, 3 May 2010 13:38:57 +0000 (15:38 +0200)
committerRafael Garcia-Suarez <rgs@consttype.org>
Mon, 3 May 2010 13:39:58 +0000 (15:39 +0200)
(that was removed in 8bdbc703cb0af3faf2163ebce618944c51f180a0)

pod/perlfunc.pod

index 8f1614f..5fe551f 100644 (file)
@@ -4425,6 +4425,32 @@ the C<\Q> escape in double-quoted strings.
 
 If EXPR is omitted, uses C<$_>.
 
+quotemeta (and C<\Q> ... C<\E>) are useful when interpolating strings into
+regular expressions, because by default an interpolated variable will be
+considered a mini-regular expression. For example:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    $sentence =~ s{$substring}{big bad wolf};
+
+Will cause C<$sentence> to become C<'The big bad wolf jumped over...'>.
+
+On the other hand:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    $sentence =~ s{\Q$substring\E}{big bad wolf};
+
+Or:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    my $quoted_substring = quotemeta($substring);
+    $sentence =~ s{$quoted_substring}{big bad wolf};
+
+Will both leave the sentence as is. Normally, when accepting string input from
+the user, quotemeta() or C<\Q> must be used.
+
 =item rand EXPR
 X<rand> X<random>