Perl中单引号和双引号之间的区别是什么?

cha*_*par 17 string perl

在Perl中,'和之间有什么区别"

例如,我有2个变量,如下所示:

$var1 = '\(';
$var2 = "\(";

$res1 = ($matchStr =~ m/$var1/);
$res2 = ($matchStr =~ m/$var2/);
Run Code Online (Sandbox Code Playgroud)

$res2声明抱怨说Unmatched ( before HERE mark in regex m.

Xet*_*ius 36

双引号使用变量扩展.单引号没有

在双引号字符串中,您需要转义某些字符以阻止它们被不同地解释.在单引号字符串中你没有(除非反斜杠,如果它是字符串中的最后一个字符)

my $var1 = 'Hello';

my $var2 = "$var1";
my $var3 = '$var1';

print $var2;
print "\n";
print $var3;
print "\n";
Run Code Online (Sandbox Code Playgroud)

这将输出

Hello
$var1
Run Code Online (Sandbox Code Playgroud)

Perl的僧人对此有着相当不错的解释这里

  • 不,这是相反的.'\\('是2个字符,而'\\("是1. (6认同)

Cha*_*aos 5

' 不会解析变量和转义

" 将解析变量并转义字符。

如果要将 \ 字符存储在 $var2 的字符串中,请使用“\\(”