原文: https://beginnersbook.com/2018/03/perl-string-escape-sequences/

在上一个教程中,我们学习了如何使用 Perl 中的字符串。在本指南中,我们将讨论转义字符,它将帮助我们在某些情况下实现所需的输出。

在 Perl 中显示电子邮件地址

字符@在 perl 中有特殊含义。正如我们已经知道的那样,当我们将特殊字符放在双引号字符串中时,perl 会尝试对其进行插值。在下面的示例中,如果我们不在@之前放置反斜杠,则会抛出错误而不是显示电子邮件,因为它会将@gmail视为数组

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

  1. use strict;
  2. use warnings;
  3. my $email = "xyz\@gmail.com";
  4. print "$email\n";
  5. # no backslash needed as interpolation does not
  6. # work in single quotes.
  7. my $email2 = '[email protected]';
  8. print "$email2\n";

输出:

  1. [email protected]
  2. [email protected]

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

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

  1. use strict;
  2. use warnings;
  3. my $name = 'Negan';
  4. my $msg = 'I am Negan';
  5. # escaping the first dollar sign but not escaping the second
  6. print "\$name: $name\n";
  7. # escaping the first dollar sign but not escaping the second
  8. print "\$msg: $msg\n";

输出:

  1. $name: Negan
  2. $msg: I am Negan

如何转义转义字符反斜杠(\

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

  1. use strict;
  2. use warnings;
  3. my $say = 'I do like to use backslash \\';
  4. print "$say\n";

输出:

  1. I do like to use backslash \

如您所见,我们在输出中显示了\

转义字符串中的双引号

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

  1. use strict;
  2. use warnings;
  3. my $say = "I like to watch \"The Walking Dead\"";
  4. print "$say\n";

输出:

  1. I like to watch "The Walking Dead"

q运算符 - qq

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

  1. use strict;
  2. use warnings;
  3. my $name = 'Chaitanya';
  4. print qq(My name is "$name" and I like brackets ()\n);

输出:

  1. My name is "Chaitanya" and I like brackets ()

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

q运算符 - q

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

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

  1. use strict;
  2. use warnings;
  3. my $name = 'Chaitanya';
  4. print q(My name is "$name" and I like brackets ()\n);

输出:

  1. My name is "$name" and I like brackets ()\n