💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 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`,因为它是一个很好的编程习惯。