my:创建私有变量。
state:告诉Perl该变量属于当前子程序的私有变量。第一次调用该子程序的时候,Perl声明并初始化变量$n, 而再接下来的调用中,这个表达是将被Perl忽略。每次程序返回后,Perl都会将该变量的当前值保留下来,以备下次调用时再用。
my:
use warnings;
use strict;
my @names = qw (name1 name2 name3 name4);
my $result = which_name_is("name2", @names);
print $result."\n";
sub which_name_is {
my($what, @array) = @_;
foreach (0..$#array){
if($what eq $array[$_]){
return $_;
}
}
return -1;
}
state:
use warnings;
use strict;
use 5.010;
marine();
marine();
sub marine{
state $n = 0; #持久性私有变量$n
$n += 1;
print "Hello, sailor number is $n\n";
}