qq behaves just like double quotes " do, they interpolate variables, but they make it easy to include double-quotes in a string without the need to escape them.
Immediately after the qq you put some opening character and then the string lasts till the ending pair of that character. I usually use some form of a pair of characters (opening and closing curly braces or parentheses), but you can also use other characters as well.
Yes, even when you use **# it works, but IMHO that's hard to read.
use strict;
use warnings;
use 5.010;
my $name = "Perl";
my $text = "The name of this programming language is \"$name\".";
say $text;
my $better = qq{The name of this programming language is "$name".};
say $better;
my $other = qq!The name of this programming language is "$name".!;
say $other;
say qq(The name of this programming language is "$name".);
say qq[The name of this programming language is "$name".];
say qq?The name of this programming language is "$name".?;
say qq#The name of this programming language is "$name".#;
The above examples all print the same string:
The name of this programming language is "Perl".