# Perl 中的标量

> 原文： [https://beginnersbook.com/2017/05/scalars-in-perl/](https://beginnersbook.com/2017/05/scalars-in-perl/)

Perl 中的标量数据被认为是单数，它可以是数字或字符串。我们已经介绍了[变量](https://beginnersbook.com/2017/02/perl-variables/)和[数据类型](https://beginnersbook.com/2017/02/data-types-in-perl/)教程中的标量。在本教程中，我们将讨论关于字符串的一些重要事项，我们会跳过数字，因为使用它们非常简单。

## 单引号字符串 vs 双引号字符串

引号不是字符串的一部分，它们只是指定字符串的开头和结尾。在 Perl 中，单引号和双引号的行为不同。要了解差异，让我们看看下面的代码：

```perl
#!/usr/bin/perl

print "Welcome to\t Beginnersbook.com\n";
print 'Welcome to\t Beginnersbook.com\n';

This would produce the following 输出：
Welcome to	 Beginnersbook.com
Welcome to\t Beginnersbook.com\n
```

您可以清楚地看到双引号内插转义序列`\t`和`\n`的区别，但是单引号没有。

**另一个例子：**

```perl
#!/usr/bin/perl

$website = "Beginnersbook";
print "Website Name: $website\n";
print 'Website Name: $website\n';
```

**输出：**

```perl
Website Name: Beginnersbook
Website Name: $website\n
```

这是双引号的另一个优点，因为它们是**“可变插值”**。这意味着双引号内的变量名称将替换为其值。单引号字符串中不会发生这种情况。

## 使用单引号

您可能正在考虑避免在 perl 程序中使用单引号，但在某些情况下您可能希望使用单引号。
例如如果要将电子邮件地址存储在变量中，那么双引号会引发错误，在这种情况下需要使用单引号。对于例如

```perl
$email = "xyz@gmail.com"; # would throw an error 

$email = 'xyz@gmail.com'; # would work fine.
```

## Perl 中的反斜杠

反斜杠可以执行以下两个任务之一：

1）它消除了跟随它的字符的特殊含义。对于例如打印`\$myvar`会产生`$myvar`输出而不是变量`myvar`值，因为在`$`之前的反斜杠（`\`）消除了`$`的特殊含义

2）它是反斜杠或转义序列的开始。对于例如`\n`是用于换行的转义序列

#### 有什么用？

相信我，你会在 perl 中开发应用时经常使用它。假设您要打印包含双引号的字符串。对于例如如果我想打印`Hello This is "My blog"`然后我需要使用以下逻辑：

```perl
#!/usr/bin/perl

$msg = "Hello This is \"My blog\"";
print "$msg\n";
```

**输出：**

```perl
Hello This is "My blog"
```

## 字符串操作

#### 级联：

您可以使用点（`.`）运算符连接字符串。例如：

```perl
"Hello"."Chaitanya" # Equivalent to "HelloChaitanya"
"Hello"."Chaitanya"."\n" # Equivalent to "HelloChaitanya\n"
```

#### 字符串重复：

语法：`MyString x MyNumber`

这将通过`MyNumber`次重复字符串`"MyString"`。

这里`x`应该是小写的。

例如：

```perl
"book" x 4  # Same as "bookbookbookbook"
"Tom" x (1+2) # Same as "Tom" x 3 or "TomTomTom"
"Wow" x 2.7 # Same as "Wow" x 2 or "WowWow"
```

在第三个例子中，2.7 被认为是 2，这里没有数字四舍五入。

**注意：** Perl 将`x`运算符之前的部分视为字符串，将`x`之后的部分视为数字。换句话说，您可以说左操作数被视为字符串而右操作数被视为数字。

例如：

```perl
8 x 3 # Same as "8" x 3 or "888"
```

使用`x`运算符时必须记住这一点，以避免混淆。`8 x 3`不是 24 而是`"888"`。