# Perl 字符串转义序列

> 原文： [https://beginnersbook.com/2018/03/perl-string-escape-sequences/](https://beginnersbook.com/2018/03/perl-string-escape-sequences/)

在上一个教程中，我们学习了[如何使用 Perl 中的字符串](https://beginnersbook.com/2018/03/perl-strings/)。在本指南中，我们将讨论**转义字符**，它将帮助我们在某些情况下实现所需的输出。

## 在 Perl 中显示电子邮件地址

字符`@`在 perl 中有特殊含义。正如我们已经知道的那样，当我们将特殊字符放在双引号字符串中时，perl 会尝试对其进行插值。在下面的示例中，如果我们不在`@`之前放置反斜杠，则会抛出错误而不是显示电子邮件，因为它会将`@gmail`视为[数组](https://beginnersbook.com/2017/05/perl-lists-and-arrays/)。

在单引号的情况下，不需要使用转义序列，因为插值不会出现在单引号字符串中。

```perl
use strict;  
use warnings;  

my $email  = "xyz\@gmail.com";  
print "$email\n";  

# no backslash needed as interpolation does not
# work in single quotes.
my $email2  = '[email protected]';  
print "$email2\n";
```

输出：

```perl
[email protected]
[email protected]
```

## 转义双引号字符串中的`$`符号

我们已经知道美元符号会插入变量的值。如果你想转义`$`符号并避免插值，请使用我们上面做的相同技巧 - 用反斜杠作为前缀。

```perl
use strict;
use warnings;
my $name = 'Negan';
my $msg = 'I am Negan';

# escaping the first dollar sign but not escaping the second
print "\$name: $name\n";

# escaping the first dollar sign but not escaping the second
print "\$msg: $msg\n";
```

输出：

```perl
$name: Negan
$msg: I am Negan
```

## 如何转义转义字符反斜杠（`\`）

在上面的例子中，我们使用反斜杠来转义特殊字符$和@。可能存在您希望在输出中显示反斜杠的情况。为此，你想要逃避反斜杠。让我们举个例子来理解这个：

```perl
use strict;
use warnings;
my $say = 'I do like to use backslash \\';
print "$say\n";
```

输出：

```perl
I do like to use backslash \
```

如您所见，我们在输出中显示了`\`。

## 转义字符串中的双引号

我们知道双引号内的文本在 Perl 中被视为字符串。让我们说我们想在 Perl 中显示一个字符串，字符串本身有一个双引号。我们将使用相同的方法，使用`\`来转义引号。

```perl
use strict;
use warnings;
my $say = "I like to watch \"The Walking Dead\"";
print "$say\n";
```

输出：

```perl
I like to watch "The Walking Dead"
```

## 双`q`运算符 - `qq`

我们可以用双`q`运算符替换用于包含字符串的双引号。这样做的好处是我们不必担心使用双引号（`"`）和括号的转义序列。

```perl
use strict;
use warnings;
my $name = 'Chaitanya';
print qq(My name is "$name" and I like brackets ()\n);
```

输出：

```perl
My name is "Chaitanya" and I like brackets ()
```

请参阅我没有使用双引号和括号的转义序列。

## 单`q`运算符 - `q`

单`q`运算符就像单引号一样工作。其中存在的特殊字符不进行插值。

让我们采用上面在双`q`运算符中看到的相同示例。

```perl
use strict;
use warnings;
my $name = 'Chaitanya';
print q(My name is "$name" and I like brackets ()\n);
```

输出：

```perl
My name is "$name" and I like brackets ()\n
```