Perl version

Modules

  • ABCDE
  • FGHIL
  • MNOPS
  • TUX

quotemeta

Perl 5 version 14.2 documentation
Recently read

quotemeta

  • quotemeta EXPR

  • quotemeta

    Returns the value of EXPR with all non-"word" characters backslashed. (That is, all characters not matching /[A-Za-z_0-9]/ will be preceded by a backslash in the returned string, regardless of any locale settings.) This is the internal function implementing the \Q escape in double-quoted strings.

    If EXPR is omitted, uses $_ .

    quotemeta (and \Q ... \E ) are useful when interpolating strings into regular expressions, because by default an interpolated variable will be considered a mini-regular expression. For example:

    1. my $sentence = 'The quick brown fox jumped over the lazy dog';
    2. my $substring = 'quick.*?fox';
    3. $sentence =~ s{$substring}{big bad wolf};

    Will cause $sentence to become 'The big bad wolf jumped over...' .

    On the other hand:

    1. my $sentence = 'The quick brown fox jumped over the lazy dog';
    2. my $substring = 'quick.*?fox';
    3. $sentence =~ s{\Q$substring\E}{big bad wolf};

    Or:

    1. my $sentence = 'The quick brown fox jumped over the lazy dog';
    2. my $substring = 'quick.*?fox';
    3. my $quoted_substring = quotemeta($substring);
    4. $sentence =~ s{$quoted_substring}{big bad wolf};

    Will both leave the sentence as is. Normally, when accepting literal string input from the user, quotemeta() or \Q must be used.

    In Perl 5.14, all characters whose code points are above 127 are not quoted in UTF8-encoded strings, but all are quoted in UTF-8 strings. It is planned to change this behavior in 5.16, but the exact rules haven't been determined yet.