# Perl 中的`use strict`和`use warnings`

> 原文： [https://beginnersbook.com/2017/05/use-strict-and-use-warnings-in-perl/](https://beginnersbook.com/2017/05/use-strict-and-use-warnings-in-perl/)

几乎每个 perl 脚本中都可以找到以下几行。

```perl
use strict;
use warnings;
```

在本文中，我们将逐一讨论它们。
**注意：**您可能无法在本网站提供的某些脚本中找到这些编译指示，这是为了避免与初学者混淆。但是，您会在高级主题上找到它们。

开始吧。

## `use strict`

`use strict`语句称为`pragma`，它可以放在脚本的开头，如下所示：

```perl
#!/usr/local/bin/perl 
use strict;
```

**它做了什么？**

它会强制您正确编码以使您的程序不易出错。例如：它强制您在使用它们之前声明变量。您可以使用`my`关键字声明变量。`my`关键字将变量的范围限制为局部。它使代码更易读，更不容易出错。

如果你没有使用`my`关键字声明变量，那么创建的变量将是全局的，你应该避免，将变量的范围缩小到需要它的位置是一个很好的编程习惯。

#### 例：

如果使用`use strict`但不声明变量。

```perl
#!/usr/local/bin/perl 
use strict;
$s = "Hello!\n";
print $s;
```

它会抛出这个错误：

```perl
Global symbol "$s" requires explicit package name at st.pl line 3.
Global symbol "$s" requires explicit package name at st.pl line 4.
Execution of st.pl aborted due to compilation errors.
```

要避免错误，您必须使用`my`关键字声明变量。

```perl
#!/usr/local/bin/perl 
use strict;
my $s = "Hello!\n";
print $s;
```

**输出：**

```perl
Hello!
```

同样，您需要在使用它们之前声明数组和哈希值。

**注意：**从 Perl 5.12 开始，隐式启用此编译指令，这意味着如果您使用的是 Perl 5.12 或更高版本，则无需使用`use strict`作为编译指令，它默认情况下启用。

## `use warnings`

这是另一个`pragma`，它们一起使用如下：

```perl
#!/usr/local/bin/perl 
use strict;
use warnings;
```

**注意**：`use warnings pragm`在 Perl 5.6 中引入，所以如果你使用的是 Perl 5.6 或更高版本，就可以了。如果您使用的是旧版本，可以打开如下警告：将`-w`放在`shebang`行。

```perl
#!/usr/local/bin/perl -w
```

即使在 Perl 5.6 或更高版本上，这也适用于任何地方。

**`use warnings`有什么用？**

它可以帮助您找到打字错误，它会在您看到程序出错时向您发出警告。它可以帮助您更快地找到程序中的错误。

**注意：**这里要注意的最重要的一点是`use strict`会在程序发现错误时中止程序的执行。另一方面，使用警告只会为您提供警告，它不会中止执行。

**结论：**

你应该总是在你的程序中使用这两个`pragma`，因为它是一个很好的编程习惯。