为什么不会出现"学习Perl第6版"的第4章示例?

Dav*_*vid 3 perl

我被困在Learning Perl第6版的第4章练习4第78页.我从第301页复制了问题的代码示例.我在Ubuntu 11.04上使用Perl版本5.10.1.我得到的错误,我无法弄清楚有人可以帮忙吗?我将列出下面的代码和错误消息.

#!/usr/bin/perl -w
use strict;

greet( 'Fred' );
greet( 'Barney' );

sub greet {
  state $last_person;

  my $name = shift;

  print "Hi $name! ";

  if( defined $last_person ) {
      print "$last_person is also here!\n";
 }
  else {
      print "You are the first one here!\n";
}
  $last_person = $name;
}


Global symbol "$last_person" requires explicit package name at ./ex4-4 line 8.
Global symbol "$last_person" requires explicit package name at ./ex4-4 line 14.
Global symbol "$last_person" requires explicit package name at ./ex4-4 line 15.
Global symbol "$last_person" requires explicit package name at ./ex4-4 line 20.
Execution of ./ex4-4 aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 9

您需要use feature 'state'在脚本顶部说出启用state变量.请参阅perldoc -f状态.


Bla*_*iev 6

手册:

从perl 5.9.4开始,您可以使用state关键字来声明变量来代替my.但是,要使其正常工作,您必须事先启用该功能,方法是使用功能部件编目指示,或者在单行上使用-E.(见专题)