perl 局部和全局变量

局部变量

局部变量范围是局部的,它存在于这两个花括号(通常称为代码块)之间,在该块之外这个变量不存在。

这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如ifif-else等,或任何循环块,如forwhiledo-while等或任何子例程的块,它甚至可以出现在匿名区块中。例如:

在上面的程序变量中,$ageif中被声明,因此这个变量只对这个块是本地的。如果我们尝试在if体外访问此变量,我们会收到错误。让我们运行以下程序:

1)使用my关键字声明局部变量,如上面的程序所示。在定义之后使用变量就不需要加 my了

2)由于局部变量的范围仅限于块,因此可以在不同的块使用相同名称的局部变量而不会发生任何冲突。

3)在整个程序中可以访问在编译指示之后的程序开头使用my关键字声明的变量。例如,程序中可以访问此程序中的变量$age

1)使用my关键字声明多个变量时,必须使用括号,否则只声明一个局部变量。例如,

my $num1, $num2;  # This would not declare $num2.
my ($num1, $num2); # This is the correct way. It declares both

2)除了变量之外,还可以使用my关键字声明本地数组和本地哈希。如声明本地数组@friends

my @friends;

全局变量

在没有声明的情况下直接使用的所有变量(没有使用my关键字)都可以从程序的每个部分访问。例如

#!/usr/bin/perl
use warnings;
if (1<2)
{
    $age =29;     #no declaration using my keyword
    print "$age\n";     
}
print "$age\n";  #accessible outside the block

注意:在这个程序中,我们删除了use strict ,因为它强制我们在使用之前使用my关键字声明所有变量。

Perl 中的use strict和use warnings 

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

use strict;
use warnings;

use strict语句称为pragma,它放在脚本的开头,它会强制我们在定义变量时使用my关键字声明变量。my关键字将变量的范围限制为局部。它使代码更易读,更不容易出错。

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

use warnings 是另一个pragma,它可以帮助你找到打字错误,它会在您看到程序出错时向您发出警告。它可以帮助您更快地找到程序中的错误。

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

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页