3.1. q{}, qq{} and Friends

Customary Generic Meaning Interpolates
'' q{} Literal No.
"" qq{} Literal Yes
`` qx{} Command Yes (unless the delimiter is '')
(none) qw{} Word List No
// m{} Pattern Match Yes (unless the delimiter is '')
(none) qr{} Declaration of a Regex Pattern Yes (unless the delimiter is '')
(none) s{}{} Substitution Yes (unless the delimiter is '')
(none) tr{}{} Transliteration No

What it means, is that you can write an interpolated string as qq followed by a matching wrapping character, inside which the string can be placed. And likewise for the other strings. Here are some examples:

#!/usr/bin/perl -w

use strict;
use warnings;


my $h = q{Hello There};
print qq|$h, world!\n|;

my $t = q#Router#;
my $y = qq($h $h $h $t);
$y =~ s!Hello!Hi!;
print qq#$y\n#;

my @a = qw{one two three};
for my $i (0 .. $#a)
{
    print "$i: $a[$i]\n";
}

The output of this is:

Hello There, world!
Hi There Hello There Hello There Router
0: one
1: two
2: three

As one can see, the wrapping characters should match assuming they are a left/right pair ({ to } etc.).


Written by Shlomi Fish