局部变量
局部变量范围是局部的,它存在于这两个花括号(通常称为代码块)之间,在该块之外这个变量不存在。
这些变量可以在任何代码块中使用,它可以在任何控制结构块中,如if
,if-else
等,或任何循环块,如for
,while
,do-while
等或任何子例程的块,它甚至可以出现在匿名区块中。例如:
在上面的程序变量中,$age
在if
中被声明,因此这个变量只对这个块是本地的。如果我们尝试在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 使用警告只会为您提供警告,它不会中止执行。