@H_502_3@
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"; }
@H_502_3@