作业帮 > 综合 > 作业

perl语言,state好像失效了

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/01 13:01:23
perl语言,state好像失效了
use 5.0.10;
use feature 'state';
sub average{
    my $sum=0;
    foreach(@_){
      $sum+=$_;
    }
    my $average=$sum/@_;
    return $average;
}

sub above_average{
    my $num=0;
    my $average=&average(@_);
    my @list=undef;
    foreach(@_){
      if($_>$average){unshift(@list,$_);}
    }
    return @list;
}

sub greet{
    state $namelast;
    state $namenow;
    if($namenow==undef){
      $namelast=undef;
      $namenow=shift(@_);
      print "Hi $namenow","!","You are the first one here\n";
    }
    else{
      $namelast=$namenow;
      $namenow=shift(@_);
      print "Hi $namenow","!","$namelast is also here ";
    }
}

greet("Fred");
greet("Barney");
greet("Tom");
结果:
perl语言,state好像失效了
sub greet{
state $namelast;
state $namenow;
if(! defined $namenow ){ -->这里注意undef不是用等号判断的奥
$namelast=undef;
$namenow=shift(@_);
print "Hi $namenow","! ","You are the first one here\n";
}
else{
$namelast=$namenow;
$namenow=shift(@_);
print "Hi $namenow","! ","$namelast is also here \n";
}
}
再问: 改成$namenow eq undef这样就对了。。perl里面比较字符串的操作符弄错了,我把。。。。