我被困在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.
答案 0 :(得分:9)
您需要在脚本顶部说use feature 'state'
以启用state
个变量。请参阅perldoc -f state。
答案 1 :(得分:6)
来自manual:
从perl 5.9.4开始,您可以使用状态声明变量 关键字代替我的。但是,要做到这一点,你必须拥有 通过使用功能编译指示预先启用该功能, 或者在单行上使用-E。 (见专题)
答案 2 :(得分:1)